在主程序运行的过程中启动了一个子进程,有时主进程要等待子进程退出后再执行代码,有时子进程需要感知主进程是否已经退出,这两种情况都需要感知另一个进程是否已经退出,那如何才能实时地感知另一个进程已经退出了呢?本文就来讲述一个有效的方法来实现这一诉求。
1、子进程实时感知主进程是否已经退出
主进程在运行过程中启动了一个子进程,启动子进程时将主进程的进程id传给子进程。子进程是依赖于主进程存活的,如果主进程退出了,则子进程要自动退出,所以子进程要实时感知主进程的状态。有人说,主进程可以在退出时通知子进程,子进程收到通知后再自行退出。但主进程可能会发生崩溃或闪退,这种情况下就没有通知子进程的机会了。
那子进程如何才能实时感知到主进程退出了呢?不管是主进程正常退出,还是异常崩溃闪退,都要感知到。子进程可以启动一个子线程,在子线程中通过主进程传过来的主进程id,获取主进程句柄,然后调用WaitForSingleObject等待主进程退出,可以在子线程中无限等待。如果主进程一旦退出,WaitForSingleObject函数就会立即返回,这时子进程就可以调用ExitProcess等接口自行退出进程了。
<