有一个程序(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/

10-12 06:10