我正在使用ImageMagick將PDF轉換爲JPG。這個轉換需要幾百毫秒才能運行,所以我有一個WaitForSingleItem等待進程句柄。WaitForSingleObject信號太快ImageMagick轉換
不幸的是,該過程幾乎立即完成,並且轉換沒有完成(我假設它由於句柄被關閉而中斷)。我想要同步行爲。
我有一個輸出管道連接到進程,我根本沒有得到任何輸出, 錯誤或其他,因爲進程認爲「確定,完成,關閉所有東西,繼續前進」。
由於操作不太密集,一切都按預期工作 - 錯誤,輸出等 - 我認爲問題幾乎肯定在等待中。
有人可以提出一個建議如何解決這個問題嗎?這裏有一些適用的代碼,可能不是很有幫助,但它是唯一重要的部分,因爲一切正常。
我運行代碼後,收到消息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