繁体   English   中英

如何启动进程C#不起作用

[英]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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM