c#重定向(管道)进程输出到另一个进程
问题描述:
我想在c#中使用Process类运行进程。c#重定向(管道)进程输出到另一个进程
Process p1 = new process();
p1.startinfo.filename = "xyz.exe";
p1.startinfo.arguments = //i am building it based on user's input.
p1.start();
所以根据用户输入我建立参数值。现在我有一个情况,我必须将p1的输出传递给另一个进程,说grep。所以我基本上试过这个
p1.startinfo.arguments =“-info | grep 1234”;
是我的本意是像xyz.exe -info | grep的1234
,但这似乎并没有在.NET中工作..其实我可以创建另一个过程变量和运行的“grep”作为一个独立的过程..但我想知道是否有任何方式可以做,因为我试试以上..
答
更简单的方法是做只是使用cmd作为您的过程。
Process test = new Process();
test.StartInfo.FileName = "cmd";
test.StartInfo.Arguments = @"/C ""echo testing | grep test""";
test.Start();
然后,您可以捕获输出或任何其他任何你想要的东西。这只是我建立的一个快速测试,但它可以将测试输出到控制台,所以我期望这将适用于您计划用管道进行的其他任何事情。如果您希望命令保持打开状态,则使用/ K而不是/ C,并且该过程完成后该窗口不会关闭。
我发现这篇博客文章涵盖了这个问题:[在Process/ProcessStartInfo类中使用管道输出重定向...](http://weblogs.asp.net/justin_rogers/archive/2004/02/27/ 81370.aspx) – 2009-08-17 22:10:29
如果您不想使用CMD,请查看[MedallionShell](https://github.com/madelson/MedallionShell)库。它使流程重定向(以及流程管理的其他方面)变得更加简单。 – ChaseMedallion 2014-08-24 18:12:09