Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/270.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/linux/28.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# Mono进程。是否开始返回ExitCode 255?_C#_Linux_Mono_Exit Code - Fatal编程技术网

C# Mono进程。是否开始返回ExitCode 255?

C# Mono进程。是否开始返回ExitCode 255?,c#,linux,mono,exit-code,C#,Linux,Mono,Exit Code,我在CentOS 5.5上运行了一个简单的C#Mono 2.10应用程序,它调用 Process.Start("/path/to/myapp/myapp.exe","-someArgs"); 我能够获得一个进程ID并使用它运行 mono --trace=N:System.Diagnostics 向我显示一个似乎指示该进程的堆栈。Start返回true: LEAVE: System.Diagnostics.Process:Start_noshell (System.Diagnostic

我在CentOS 5.5上运行了一个简单的C#Mono 2.10应用程序,它调用

Process.Start("/path/to/myapp/myapp.exe","-someArgs");    
我能够获得一个进程ID并使用它运行

mono --trace=N:System.Diagnostics
向我显示一个似乎指示该进程的堆栈。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 
应用程序无任何异常地正确启动,并按预期工作


知道我搞砸了什么吗?

尝试启动“mono”作为进程,并使用“/path/to/myapp/myapp.exe-someArgs”作为命令行参数。这将导致进程。开始表现得更像正常的应用程序启动。

问题是Linux本身不知道需要使用Mono来运行CIL.exe二进制文件,因此它尝试使用ld-Linux.so作为加载程序,这显然是由于失败的原因

您需要以/path/to/myapp.exe作为参数调用mono


FWIW,255的退出代码只是“错误”。文件
/path/to/myapp/myapp.exe
是可执行文件(
chmod+x/path/to/myapp/myapp.exe
)吗?Mono 2.10会检查它启动的进程是否是托管可执行文件,如果是,则会隐式使用当前正在执行的Mono来启动新进程,例如
CreateProcess
包含所有详细信息,但其中包括:


如果
Process.Start
仍然无法启动您的进程,那么这可能是一个mono错误,我们希望报告一个错误。:-)

您可以使用此进程重载启动进程。启动:

Process.Start("/bin/bash", "-c \"echo 'Hello World!'\"");

不知道为什么,但它很管用。

我想试试那个。让我看看发生了什么,很好,解决了问题。有道理,我正在启动的“应用程序”是“mono”而不是“myapp.exe”。这应该不是必需的,因为mono的CreateProcess()显式检查托管可执行文件,并隐式使用相同的
mono
启动它们。“/path/to/myapp/myapp.exe”是否可执行(
chmod+x
)?另见:我认为255是无用的,谢谢你的信息。里德领先你几分钟,但两个答案都是正确的。谢谢你的最终解释,新答案让你赢了。如果我在我的exe上使用ls-l,则权限是this-rwxr xr xSo,即使在myexe上强制使用chmod+x(它已经是了),它仍然无法启动我的进程。那么mono中的一个bug呢?