在.NET中,您可以在System.Diagnostics.Process
对象上订阅the Exited
event,并在进程退出时获得异步通知。这对我来说真的很方便。
在使用信号或其他东西的Win32中是否有任何等价物?我想象的最接近的事情是产生一个线程,除了WaitForSingleObject
在进程句柄上做无效超时,然后调用回调。
答案 0 :(得分:2)
是的,在进程句柄上调用WaitForSingleObject()的线程将起作用。但这很浪费,您可以通过RegisterWaitForSingleObject()让操作系统为您完成。与.NET Process类用于引发Exited事件的完全相同的函数。
在回调中可以执行的操作完全相同,它在任意线程池线程上运行,因此必须在必要时正确互锁以保持代码线程安全。
答案 1 :(得分:0)
CreateProcess
的最后一个参数是包含PROCESS_INFORMATION
句柄的hProcess
结构,您可以将此句柄与WaitForSingleObject
一起使用