如何启动进程 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 运算符。因为你 "passing" 它错了,而且因为你禁用了 UseShellExecute
,所以这是行不通的。
您需要手动进行重定向:)
此外,一旦您说 "sure, redirect output and error to me",您实际上必须 阅读 那些流。如果不这样做,应用程序将在用完输出缓冲区中的 space 时挂起。这可能就是您的代码神秘地停止工作的原因 - 来宾应用程序写入的内容超出了缓冲区的处理能力。
进程通常看不到管道或重定向运算符(> 此处)之后的任何内容。这是由 shell 解析的。你试过 UseShellExecute = true 吗?我没有,不知道这是否会做任何事情。但我认为您的父进程需要从 shell 或调试选项启动以包含该输出重定向。否则,您将不得不读取子进程的 StandardOutput 并将其转储到您自己的代码文件中。
https://msdn.microsoft.com/en-us/library/system.diagnostics.process.standardoutput%28v=vs.110%29.aspx
我正在尝试启动 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 运算符。因为你 "passing" 它错了,而且因为你禁用了 UseShellExecute
,所以这是行不通的。
您需要手动进行重定向:)
此外,一旦您说 "sure, redirect output and error to me",您实际上必须 阅读 那些流。如果不这样做,应用程序将在用完输出缓冲区中的 space 时挂起。这可能就是您的代码神秘地停止工作的原因 - 来宾应用程序写入的内容超出了缓冲区的处理能力。
进程通常看不到管道或重定向运算符(> 此处)之后的任何内容。这是由 shell 解析的。你试过 UseShellExecute = true 吗?我没有,不知道这是否会做任何事情。但我认为您的父进程需要从 shell 或调试选项启动以包含该输出重定向。否则,您将不得不读取子进程的 StandardOutput 并将其转储到您自己的代码文件中。 https://msdn.microsoft.com/en-us/library/system.diagnostics.process.standardoutput%28v=vs.110%29.aspx