【发布时间】:2014-01-22 15:55:18
【问题描述】:
有一个程序 (c#) 通过 System.Diagnostics.Process 启动我的脚本,然后在其上调用 WaitForExit()。脚本(在这种情况下是 python,虽然可以是任何东西)然后生成一个子进程并退出。我希望程序继续运行,但它一直挂起,直到子进程退出。
我尝试了许多启动子进程的方法,从 python 的 os.fork 到编写 shell 脚本包装器,但每种方法都会导致程序挂起。无法更改c#程序的代码,需要对子进程做些什么才能让程序继续运行?
注意:我不知道这是否重要,但 c# 程序在 ubuntu 上以单声道运行。
编辑:在调用 WaitForExit 之前进一步审查 c# 代码后,有一个 while (!process.StandardOutput.EndOfStream) 循环,这可能是问题吗?
【问题讨论】:
-
您是否可以控制子流程的代码,或者您必须在中间 Python 脚本中执行此操作?
-
我可以控制两者。事实上,我的 os.fork 方法使用了一个 Python 脚本。
-
好的,那应该更容易……让我编辑答案。
-
作为旁注,您知道是否有任何关于 mono 如何将 .NET 进程语义映射到 POSIX 进程语义的好的文档?我在搜索中找不到任何有用的东西。
-
我不是真正的 c# 程序员,所以不,我不知道。
标签: c# python process mono system.diagnostics