Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/310.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# 如何在Red Hat Linux中从Mono/MonoDevelop运行bash命令?_C#_Mono_Monodevelop_Redhat - Fatal编程技术网

C# 如何在Red Hat Linux中从Mono/MonoDevelop运行bash命令?

C# 如何在Red Hat Linux中从Mono/MonoDevelop运行bash命令?,c#,mono,monodevelop,redhat,C#,Mono,Monodevelop,Redhat,我想使用C#和mono运行下面的bash命令,开发输出并将其存储到变量中 /测试pp--H 我的MonoDevelop代码: Process proc = new Process(); proc.StartInfo.FileName = "/bin/bash"; proc.StartInfo.Arguments = "/usr/mono/TestApp --H"; proc.StartInfo.UseShellExecute = false; proc

我想使用C#和mono运行下面的bash命令,开发输出并将其存储到变量中

/测试pp--H

我的MonoDevelop代码:

    Process proc = new Process();
    proc.StartInfo.FileName = "/bin/bash";
    proc.StartInfo.Arguments = "/usr/mono/TestApp  --H";
    proc.StartInfo.UseShellExecute = false; 
    proc.StartInfo.RedirectStandardErrort = true;
    proc.StartInfo.RedirectStandardInput = true;
    proc.StartInfo.RedirectStandardOutput = true;
    proc.Start();
    var output = proc.RedirectStandardOutput.ReadToEnd()
上述代码不起作用。输出变量未按预期获取值

如果我使用shell脚本修改上述代码,那么它将正常工作

Test.sh

    #!/bin/bash
    /usr/mono/TestApp  --H;
修改单声道编码:

proc.StartInfo.Arguments = "Test.sh";

谢谢你

如果
/usr/mono/TestApp
不是一个shell脚本(对于你的问题,我想不是),这应该可以工作(你不需要bash来运行程序):

顺便说一下,使用重定向时要小心。如果TestApp进程和Mono进程之间的管道已满,应用程序将无法完成(出现死锁),请阅读文档以了解更多信息:

Process proc = new Process();
proc.StartInfo.FileName = "/usr/mono/TestApp";
proc.StartInfo.Arguments = "--H";
proc.StartInfo.UseShellExecute = false; 
proc.StartInfo.RedirectStandardError = true;
proc.StartInfo.RedirectStandardInput = true;
proc.StartInfo.RedirectStandardOutput = true;
proc.Start();
var output = proc.StandardOutput.ReadToEnd ();
Console.WriteLine("stdout: {0}", output);