我有一个在 CentOS 5.5 上运行的简单 C# Mono 2.10 应用程序,它调用
Process.Start("/path/to/myapp/myapp.exe","-someArgs");
我能够取回进程 ID 并运行
mono --trace=N:System.Diagnostics
向我展示了一个似乎表明 Process.Start 返回 true 的堆栈:
LEAVE: System.Diagnostics.Process:Start_noshell (System.Diagnostics.ProcessStartInfo,System.Diagnostics.Process)TRUE:1
LEAVE: System.Diagnostics.Process:Start_common (System.Diagnostics.ProcessStartInfo,System.Diagnostics.Process)TRUE:1
LEAVE: System.Diagnostics.Process:Start ()TRUE:1
LEAVE: (wrapper remoting-invoke-with-check) System.Diagnostics.Process:Start ()TRUE:1
我认为这意味着该进程是在没有异常的情况下产生的,例如 FileNotFound 等。
但是,该过程似乎立即退出,我得到的退出代码是 255。我认为这是一个具有明显含义的 Linux 退出代码,但我在管子上找不到任何用处。
直接通过启动完全相同的应用程序时
mono /path/to/myapp/myapp.exe -someArgs
应用程序正确启动,没有任何异常,并按预期工作。
知道我在搞砸什么吗?