2011-05-06 21 views
4

你好 im不是win32程序員,它對我來說都是新的。 我喜歡從我父母的win32應用程序打開進程(好吧,這是我知道該怎麼辦) 子進程然後寫入文本文件並關閉它自己。我如何檢測父應用程序中的子應用程序完成寫入文本文件。然後從父應用程序讀取文本文件。這全是在win32 C++ 謝謝如何使用win32 CreateProcess函數等到孩子完成寫入文件

+2

您是否可以等待子進程終止,還是需要在孩子仍在運行時開始寫入文件? – 2011-05-06 07:08:18

+0

子進程(Qt應用程序)寫文件 – user63898 2011-05-06 12:21:09

回答

4

Benoits答案稍作修改。您可以在父進程中創建一個事件,並通過WaitForSingleObject等待該事件。這個事件可以通過致電SetEvent來通知孩子。

http://msdn.microsoft.com/en-us/library/ms686211%28v=vs.85%29.aspx

子進程將繼承所有可繼承的句柄,因此CreateProcess的必須有設置爲true(bInheritHandles)的第五個參數是很重要的。

通過這種方式,子進程不必退出,以便檢查文件是否已寫入。

+0

這是不必要的複雜。等待,直到過程發出信號。 – 2011-05-07 10:29:03

+1

在問題中沒有說孩子的過程應該退出,因此你不能假設它。 – ralphtheninja 2011-05-07 11:04:04

0

如果你的孩子在創建文件後會退出,你可以使用::WaitForSingleObject使用::CreateProcess返回的進程句柄。

4

PROCESS_INFORMATION結構(這是CreateProcess的最後一個參數)包含成員hProcess。這是新流程的句柄,您可以使用WaitForSingleObject等待。

+0

我錯誤地downvoted了,對不起。 – Max 2017-03-08 17:15:41