【发布时间】:2014-12-17 05:37:09
【问题描述】:
在安装了 Mono 的 Raspberry Pi(Linux) 上运行在 Visual Studio 2013 中编译的 c# 控制台应用程序,以下代码...
System.Diagnostics.Process syncProc = new System.Diagnostics.Process();
syncProc.StartInfo.WindowStyle = System.Diagnostics.ProcessWindowStyle.Hidden;
syncProc.StartInfo.UseShellExecute = false;
syncProc.StartInfo.FileName = "bash";
syncProc.StartInfo.Arguments = "-c sync --help";
syncProc.StartInfo.RedirectStandardError = true;
syncProc.StartInfo.RedirectStandardOutput = true;
syncProc.Start();
String stdOutput = syncProc.StandardOutput.ReadToEnd();
String errorOutput = syncProc.StandardError.ReadToEnd();
syncProc.WaitForExit();
if (syncProc.ExitCode == 0)
{
Console.WriteLine("SOUTPUT: " + stdOutput);
}
else
{
Console.WriteLine("EOUTPUT: " + errorOutput);
throw new Exception("Failed to sync with exit code: " + syncProc.ExitCode);
}
...输出“输出:”
为什么stdOutput总是空的?
【问题讨论】:
-
如果你自己从控制台运行
bash -c sync --help,输出是什么? -
没有输出。但是“sync --help”显示: 用法:sync [OPTION] 强制更改块到磁盘,更新超级块。 --help 显示此帮助并退出 --version 输出版本信息并退出
-
嗯,这就是你的答案:stdOutput 是空的,因为你正在执行的命令没有输出任何东西。
-
如果我想通过比较 windows 来理解命令。使用命令提示符 A 的参数打开命令提示符 B 将在 B 中显示 B 的输出,而不是 A。在这种情况下不一样吗?通过打开带有参数的单独终端,默认情况下不会显示输出,因为单独的终端是接收输出的终端?不需要重定向吗?到产生单独终端的终端?
标签: c# linux process mono raspberry-pi