Я пишу класс оболочки для исполняемого файла командной строки. Этот exe принимает ввод от stdin, пока я не нажму ctrl + c в командной строке командной оболочки, и в этом случае он выводит результат на основе ввода в stdout. Я хочу, чтобы имитировать, что ctrl + 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 вручную. edit: это С# 2.0 btw