如果您自己生成这些子进程,则可以使用Job对象,它们可以在作业的一部分进程结束时通知您.
使用JobObjectAssociateCompletionPortInformation并捕获JOB_OBJECT_MSG_ABNORMAL_EXIT_PROCESS或JOB_OBJECT_MSG_EXIT_PROCESS.
我不知道这是否是最好的方法,但它肯定是一种方法。
我假设您正在使用CreateProcess. 这将返回一个PROCESS_INFORMATION包含 member的结构hProcess。这是您创建的子进程的句柄。
从这里开始,您可以使用 等待此句柄WaitOnSingleObject,它将阻塞,直到给定的句柄发出信号为止(尽管如果您更愿意执行此非阻塞操作,它确实需要超时 - 它是select您将获得的最接近的等价物)。
如果您确实走多线程路线,那么您可以等待一个单独的线程,然后当WaitOnSingleObject通过时,您可以相应地通知父进程中的工作线程。
在单线程风格中,如果您使用select-style 语义,您将只是在循环中轮询句柄。
如果您有多个子对象要等待(假设您已经在使用 select),您可能需要考虑WaitForMultipleObjects- 如果这是您代码的相关模型。
| 归档时间: |
|
| 查看次数: |
1707 次 |
| 最近记录: |