如何在C#中将ctrl + c发送到进程?
我正在为命令行可执行文件编写包装器类。此exe接受输入,stdin
直到我Ctrl+C
在命令提示符外壳中命中为止,在这种情况下,它将stdout
根据输入将输出打印到。我想模拟Ctrl+C
C#代码中的按下操作,将kill命令发送到.NET
Process
对象。我曾尝试打电话Process.Kill()
给我,但这似乎并没有给我带来任何好处StandardOutput
StreamReader
。可能有什么我做对的事情吗?这是我要使用的代码:
ProcessStartInfo info = new ProcessStartInfo(exe, args);info.RedirectStandardError = true;
info.RedirectStandardInput = true;
info.RedirectStandardOutput = true;
info.UseShellExecute = false;
Process p = Process.Start(info);
p.StandardInput.AutoFlush = true;
p.StandardInput.WriteLine(scriptcode);
p.Kill();
string error = p.StandardError.ReadToEnd();
if (!String.IsNullOrEmpty(error))
{
throw new Exception(error);
}
string output = p.StandardOutput.ReadToEnd();
即使我从stdout
手动运行exe时取回数据,输出也始终为空。
:顺便说一下,这是C#2.0。
回答:
我实际上只是想出了答案。谢谢你们的回答,但事实证明,我要做的就是:
p.StandardInput.Close()
这使我产生的程序完成了从stdin的读取并输出了我所需要的。
以上是 如何在C#中将ctrl + c发送到进程? 的全部内容, 来源链接: utcz.com/qa/423158.html