我正在寻找一个明确的答案。
由于某种原因(一些建议缓冲区不刷新,其他人建议使用较低级别的API)我发现当重定向标准输入流时,某些命令行应用程序(特别是ftp.exe)的输出不同。
这清楚地隔离并证明了差异:
Process p = new Process();
ProcessStartInfo psi = new ProcessStartInfo();
psi.FileName = "cmd.exe";
psi.Arguments = " /c ftp";
psi.UseShellExecute = false;
// when false, the ftp prompt is shown
psi.RedirectStandardInput = true;
p.StartInfo = psi;
p.Start();
while (true)
{
Thread.Sleep(100);
}
如果有人能把它放到床上,我会非常感激。 我不是在寻找编写FTP客户端实现的建议 - 我只是想知道地狱“ftp>”的去向,以及为什么只有当我重定向标准输入流时。重定向其他流(输出和未启动的错误)不会产生相同的效果。
TIA