通常,当程序从Windows控制台运行时,控制台将等待进程退出,然后打印提示符并等待用户输入。但是,如果进程启动了子进程,控制台仍然只会等待第一个进程退出。它也不会等待子进程。
程序是否有办法让控制台等待另一个子进程而不是(或同时)当前进程?
我认为这是不可能的,因为控制台可能正在等待进程句柄,并且没有办法替换该句柄。然而,我很难找到任何对此的证实。
程序是否有办法让控制台等待另一个子进程而不是(或同时)当前进程?
。正如您注意到的,一旦控制台创建的第一个进程退出,控制台就会停止等待。它没有第一个进程创建任何子进程的概念。
所以,你可以这样做:
-
让第一个进程等待它创建的子进程退出。
-
如果没有选项,则创建一个单独的helper进程,该进程创建一个Job Object,然后启动主进程并将其分配给该作业。它创建的任何子进程都将自动被放到相同的作业中1。然后,辅助进程可以等待作业中的所有进程退出,然后再退出自己。然后,您可以让控制台运行并等待辅助进程而不是主进程。
1:默认情况下-进程生成器可以选择从当前作业中生成一个新的子进程,如果作业设置允许的话。