var process = new Process();
var startInfo = new ProcessStartInfo();
startInfo.FileName = @"cmd.exe";
startInfo.RedirectStandardOutput = true;
startInfo.RedirectStandardInput = true;
process.StartInfo = startInfo;
process.Start();
await process.StandardInput.WriteLineAsync("curl http://example.com");
var response = await process.StandardOutput.ReadToEndAsync();
有人知道为什么这个挂在最后一行吗?我对此做了一些研究,看到有人提到过死锁。我发现的其他解决方案都非常丑陋,似乎是在Async方法被添加到。net之前编写的(它们使用Begin/End范式)。
需要调用exit
命令退出进程。然后StandardOutput.ReadToEndAsync
将返回响应。
var process = new Process();
var startInfo = new ProcessStartInfo();
startInfo.FileName = @"cmd.exe";
startInfo.RedirectStandardOutput = true;
startInfo.RedirectStandardInput = true;
process.StartInfo = startInfo;
process.Start();
await process.StandardInput.WriteLineAsync("curl http://example.com");
await process.StandardInput.WriteLineAsync("exit");
var response = await process.StandardOutput.ReadToEndAsync();