文号
828342
阅读
3684
回复
0
收藏
1
在C#中合并stderr到stdout的简单方法
2016/12/13
IP:四川

以前发了一个用WinAPI合并stderr到stdout的方法,但是实际上不用这么麻烦,直接使用下面的命令格式就可以了。

cmd /c 命令 2>&1

比如如果运行cmd /c dir aaa会出现错误消息File Not Found,但是由于是输出到stderr的,C#的Process类并不能将它与stdout合并显示出来:

Stderr1.png

但是如果运行cmd /c dir aaa 2>&1,就可以将stderr和stdout合并了:

Stderr2.png

private void button1_Click(object sender, EventArgs e)
{
    Process proc = new Process();
    proc.StartInfo.FileName = "cmd";
    proc.StartInfo.Arguments = "/c dir aaa 2>&1";
    proc.StartInfo.UseShellExecute = false;
    proc.StartInfo.CreateNoWindow = true;
    proc.StartInfo.RedirectStandardOutput = true;
    proc.Start();
    this.textBox1.Text = proc.StandardOutput.ReadToEnd();
}
[ 修改于10年0个月前 - 2016/12/13 18:52:30 ]
笔记
{{note.content}}
{{n.user.username}}
{{fromNow(n.toc)}} {{n.status === noteStatus.disabled ? "已屏蔽" : ""}} {{n.status === noteStatus.unknown ? "正在审核" : ""}} {{n.status === noteStatus.deleted ? '已删除' : ''}}
  • 编辑
  • 删除
  • {{n.status === 'disabled' ? "解除屏蔽" : "屏蔽" }}
我也是有底线的