當目標進程及其所有子進程退出時,是否會返回等待方法?看來Process.WaitForExit()只會等待目標進程。如何等待進程及其所有子進程退出?
1
A
回答
1
這可能會有所幫助--Windows 2000引入了「作業」的概念,這是一個受控於一個單元的進程集合,非常像UNIX/LINUX中的進程組。因此,通過在工作中啓動進程,然後告訴Windows殺死作業中的所有進程,可以殺死進程及其所有子進程。
基本上創建一個新的工作,然後使用該工作來產生子進程。所有的孩子也將在新的工作中創建。超時時,只需調用作業的kill()方法,整個流程樹就會終止。您可能會檢查.NET文檔以獲取更多相關信息。我使用Perl的Win32 :: Job API來實現你正在嘗試做的事情。查看MSDN上的以下鏈接以獲取更多信息:Job API Description
1
0
.net中存在一個錯誤,它會給你以後的行爲。
WaitForExit()
將等待所有子進程,如果您正在異步讀取輸出。
p.StartInfo.RedirectStandardOutput = true;
p.OutputDataReceived = new DataReceivedEventHandler(OutputHandler);
p.BeginOutputReadLine();
p.BeginErrorReadLine();
WaitForExit(Int32.MaxValue-1)
允許我們在使用異步模式時獲得正常行爲。
相關問題
- 1. 如何等待Windows進程及其子進程全部退出?
- 2. 如何檢查Linux進程及其所有子進程何時退出?
- 3. 非阻塞等待子進程退出
- 4. Perl,等待非子進程退出
- 5. 的Java,等待子進程退出
- 6. 退出所有子進程退出
- 7. 如何等待進程子進程?
- 8. 讓父母等待所有子進程
- 9. Java:等待所有子進程完成
- 10. 等待子進程
- 11. 等待子進程
- 12. 不要等待進程退出
- 13. 進程等待退出不起作用
- 14. 進程結束等待退出
- 15. 塊事件等待當進程退出
- 16. 設置等待時間進程退出
- 17. 等待進程,直到所有子進程完成?
- 18. 殺死一個進程並等待進程退出
- 19. 等待與去年子進程的返回碼在後臺完成,並退出所有的子進程
- 20. 讓子進程等待父進程
- 21. 超時後,終止進程及其所有子進程
- 22. 等待其他進程
- 23. 子進程彼此等待
- 24. 如何跟蹤由進程及其子進程打開的所有文件?
- 25. 如何計算Linux中進程及其所有子進程的CPU利用率?
- 26. 如何等待子進程結束
- 27. 如何等待winapi的非子進程?
- 28. 如何等待進程終止(並等待相應的子進程)在PHP中?
- 29. 等待進程
- 30. 多線程 - 殺死線程及其所有子進程
這就是WaitForExit()所做的。顯然這並不能解決湯姆森(或我)的問題。我的問題,特別是從另一個啓動窗體窗體(生成的應用程序是一次點擊 - 因此它使用.application文件調用)Process.Exited標誌立即設置。可能只要實際的表格應用程序啓動。 –