如何使用win32 CreateProcess函数等到孩子完成写入文件
Posted
技术标签:
【中文标题】如何使用win32 CreateProcess函数等到孩子完成写入文件【英文标题】:How to use win32 CreateProcess function to wait until the child done to write to file 【发布时间】:2011-05-06 07:05:12 【问题描述】:你好 我不是 win32 程序员,它对我来说是全新的。 我喜欢从我的父 win32 应用程序打开进程(好的,我知道该怎么做) 子进程然后写入文本文件并自行关闭它。我如何在父应用程序中检测到子应用程序已完成写入文本文件。然后从父应用读取文本文件。这都是在win32 c++中 谢谢
【问题讨论】:
您可以等待子进程终止,还是需要在子进程仍在运行时开始写入文件? 执行写入文件的子进程(Qt 应用程序) 【参考方案1】:PROCESS_INFORMATION
结构(它是 CreateProcess 的最后一个参数)包含成员 hProcess
。这是新进程的句柄,您可以使用WaitForSingleObject
等待。
【讨论】:
【参考方案2】:对 Benoits 的回答稍作修改。您可以在父进程中创建一个事件并使用 WaitForSingleObject 等待该事件。然后,孩子可以通过调用 SetEvent 来发出此事件的信号。
http://msdn.microsoft.com/en-us/library/ms686211%28v=vs.85%29.aspx
重要的是子进程将继承所有可继承的句柄,因此 CreateProcess 必须将第五个参数设置为 true (bInheritHandles)。
这样子进程不必退出来检查文件是否已写入。
【讨论】:
这太复杂了。等到进程发出信号。 问题中并没有说子进程应该退出,因此你不能假设它。【参考方案3】:如果您的孩子将在文件创建后退出,您可以使用::WaitForSingleObject
使用::CreateProcess
返回的进程句柄。
【讨论】:
以上是关于如何使用win32 CreateProcess函数等到孩子完成写入文件的主要内容,如果未能解决你的问题,请参考以下文章
Win32 API 类似于 CreateProcess,但适用于 bat/cmd/等。 (即使用 PATHEXT)
使用 CreateProcess 从 Win32 C++ 应用程序启动 Java 应用程序时出错