2013-01-10 3 views
1

C++로 파일 작업을하고 있습니다. 시스템 프롬프트에서 txt 파일을 만드는 프로그램을 호출합니다. 그런 다음 C++을 사용하여 해당 파일을 읽습니다. C++이 파일을 읽기 전에 프로그램이 끝날 때까지 기다려야합니다.C++ 시스템 호출 대기

에 대한 설명의 C++ : 프로그램 WP/PRO386W.exe는 콘솔 프로그램입니다

createOutputFile(); 
system("Start wp/PRO386W.EXE /V1 consult('wp/read.pl')."); 
// I need to wait for this "PRO386W.EXE to finish 
readLista();//before calling this method 
+2

'system()'대신'CreateProcess'를 사용하면 리턴 된 핸들을 기다릴 수 있습니다. – Chad

답변

5

system()은 명령이 완료되기를 기다립니다. 귀하의 경우, "명령"은 "시작"이고 그것은 배경으로 강제합니다. "시작"을 제거하면 괜찮을 것입니다. 비동기가되도록하려면 프로세스를 다르게 시작해야합니다.

+0

나는 시스템을 시험해 보았다 ("wp/PRO386W.EXE/V1 consult ('wp/read.pl')."); 그것도 작동하지 않았다. –

+0

Windows와 같은 프로그램을 실행할 수 없기 때문에 작동하지 않았습니다. CreateProcess를 사용하고 CreateProcess가 반환하는 핸들을 기다립니다. –

+0

이제 작동합니다. 시스템 ("\"wp/PRO386W.EXE \ "/ V1 consult ('wp/read.pl')."); –

1

, 그냥 백그라운드에서 프로그램 실행을하게 Start을 제거합니다. UPD : 백 슬래시 (backslash)를 사용해야 할 수도 있습니다. "WP\\PRO386W.exe ...".

-3

언제든지 파일의 끝을 확인할 수 있습니다. fin이 ifstream 타입이라면 f (! fin.eof())를 확인할 수 있습니다.

+0

뭐 ...'istream :: eof'가 무엇을 의미하는지, 그것이 무엇을 의미하는지 이해하지 못한다고 생각합니다. –