ImageMagick을 사용하여 PDF를 JPG로 변환하고 있습니다. 이 변환에는 몇 백 밀리 초가 걸리기 때문에 WaitForSingleItem 프로세스 핸들을 기다리고 있습니다.WaitForSingleObject 신호가 너무 빨리 나타납니다 ImageMagick convert
불행히도 프로세스가 거의 즉시 완료되고 변환이 완료되지 않습니다. 핸들이 닫히기 때문에 인터럽트가 발생했다고 가정합니다. 나는 동기적인 행동을 원한다.
프로세스에 연결된 출력 파이프가 있는데 "OK, 완료, 모든 것을 닫고 계속 진행하십시오"라고 생각하기 때문에 오류가 발생하거나 출력이 전혀 출력되지 않습니다.
덜 집중적 인 조작으로 모든 것이 예상대로 작동합니다 - 오류, 출력 등 - 나는 문제가 거의 확실하게 기다리고 있다고 생각합니다.
누군가이 문제를 해결할 수있는 방법을 제안 할 수 있습니까? 여기에 적용 가능한 코드가 있습니다. 아마도별로 도움이되지 않지만, 다른 모든 것이 잘 작동하기 때문에 중요한 부분입니다.
코드를 실행 한 후 WAIT_OBJECT_0
메시지가 나타납니다.
if (!CreateProcess(
NULL,
(LPSTR) "convert test.pdf test.jpg",
NULL,
NULL,
TRUE,
CREATE_NO_WINDOW,
NULL,
NULL,
&si,
&pi
)) { console_->AddItem("ERROR: Failed to create process."); }
DWORD wait = WaitForSingleObject(pi.hProcess, INFINITE);
if (wait == WAIT_ABANDONED) { MessageBox(NULL, "WAIT_ABANDONED", "Alert", MB_OK); }
else if (wait == WAIT_OBJECT_0) { MessageBox(NULL, "WAIT_OBJECT_0", "Alert", MB_OK); }
else if (wait == WAIT_TIMEOUT) { MessageBox(NULL, "WAIT_TIMEOUT", "Alert", MB_OK); }
else if (wait == WAIT_FAILED) { MessageBox(NULL, "WAIT_FAILED", "Alert", MB_OK); }
else { MessageBox(NULL, "END OF THE WORLD", "Alert", MB_OK); }
"더 집중적으로"더 오래 걸리는 명령이 실제로 작동하고 오류가 발생하지 않는다는 것이 긍정적입니까? – jeremy
예, 저는'cmd'에서도 별도로 테스트 해 보았습니다. 저는 여러 해 동안 다른 언어로이 명령을 사용 해왔습니다. 또한 의도적 인 오류가있는 다른 "덜 집중적 인"명령을 시도했지만 문제없이 파이프를 사용합니다. – Ben
GetExitCodeProcess는 무엇을 반환합니까? – jeremy