C# 如何在Red Hat Linux中从Mono/MonoDevelop运行bash命令?
我想使用C#和mono运行下面的bash命令,开发输出并将其存储到变量中 /测试pp--H 我的MonoDevelop代码: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
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);