有一个程序(c#)通过System.Diagnostics.Process启动我的脚本,然后在其上调用WaitForExit()。该脚本(在这种情况下为python,尽管可以是任何东西)然后生成一个子进程并退出。我希望程序继续执行,但是会挂起,直到子进程退出。
我尝试了许多启动子进程的方法,从python的os.fork到编写Shell脚本包装器,但是每种方法都会导致程序挂起。我无法更改c#程序的代码,我需要对子进程做些什么才能使程序继续运行?
注意:我不知道这是否重要,但是C#程序在ubuntu上以单声道运行。
编辑:在调用WaitForExit之前对C#代码进行了进一步检查之后,出现了一个while (!process.StandardOutput.EndOfStream)
循环,这可能是问题吗?
最佳答案
WaitForExit似乎挂在打开的stdout / stderr上。我使用此脚本使脚本异步:
#!/bin/bash
~/foo.py "$@" >&- 2>&- &
希望这可以帮助下一个人来。
关于c# - 愚弄System.Diagnostics.Process WaitForExit(),我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/20929747/