[英]How to start a Process c# Not working
我正在尝试启动Wireshark的过程,并将.pcap文件导出为纯文本。
通过命令行,我可以执行导出,因此我知道参数正确并且程序在PATH环境中。
有趣的是,今天早晨我一次使用了这段代码,并且可以正常工作。 后续运行无法转换文件。
这是我正在使用的代码。
private void Button1Click(object sender, EventArgs e)
{
var stinfo = new ProcessStartInfo();
stinfo.FileName = @"c:\Program Files (x86)\Wireshark\tshark.exe";
stinfo.Arguments = "-V -r " + @"c:\Brian_00001_20151110133639.pcap" + " > " + @"c:\\Brian_00001_20151110133639.txt";
stinfo.CreateNoWindow = true;
stinfo.UseShellExecute = false;
stinfo.RedirectStandardOutput = true;
stinfo.RedirectStandardError = true;
Process myProcess = Process.Start(stinfo);
myProcess.Start();
myProcess.WaitForExit();
}
谢谢,
>
不是参数,而是shell运算符。 由于您“传递”了错误信息,并且由于禁用了UseShellExecute
,因此无法正常工作。
您需要手动进行重定向:)
另外,一旦您说出“确定,将输出和错误重定向给我”,您就必须实际读取这些流。 如果不这样做,则应用程序将在输出缓冲区中的空间不足时挂起。 这可能是您的代码神秘地停止工作的原因-来宾应用程序编写的缓冲区超出了缓冲区的处理能力。
该过程通常看不到管道或重定向运算符之后的任何内容(>此处)。 那是由shell解析的。 您是否尝试过UseShellExecute = true? 我没有,不知道能不能做任何事情。 但是我认为您的父进程需要从shell或调试选项启动以包括该输出重定向。 否则,您将必须阅读子进程的StandardOutput并将其自己转储到文件中的代码中。 https://msdn.microsoft.com/en-us/library/system.diagnostics.process.standardoutput%28v=vs.110%29.aspx
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.