Как отправить Ctrl + C процессу в C #?
Я пишу класс-оболочку для исполняемого файла командной строки. Этот exe принимает ввод от stdin до тех пор, пока я не нажму ctrl + c в оболочке командной строки, и в этом случае он печатает выходные данные на основе ввода в stdout. Я хочу смоделировать нажатие ctrl + c в коде c #, посылая команду kill объекту процесса .Net. Я пытался вызвать 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 кстати