Всем привет. Почему то вот этот пример
ProcessStartInfo info=new ProcessStartInfo("python");
info.RedirectStandardOutput = true;
info.RedirectStandardInput = true;
info.RedirectStandardError = true;
info.UseShellExecute = false;
//info.CreateNoWindow = true;
Process process=new Process();
process.OutputDataReceived += (s, e) =>
{
Console.WriteLine($"Output:{e.Data}");
};
process.ErrorDataReceived += (s, e) =>
{
Console.WriteLine($"Error:{e.Data}");
};
process.StartInfo = info;
process.Start();
process.BeginErrorReadLine();
process.BeginOutputReadLine();
while (!process.HasExited)
{
Console.Write("Command:");
var line= Console.ReadLine();
process.StandardInput.WriteLine(line);
process.StandardInput.Flush();
}
Console.WriteLine("Done");
Console.ReadLine();
приводит к тому, что от процесса python вообще не приходят никакие данные.
Если выключить RedirectStandardInput , то приходят данные , но соот-но из родительского потока никак не отправить команды, кроме как руками.
При этом если запускаю не процесс питона, а например просто cmd , то все работает как надо.
Заранее спасибо
PS
Если что IronPython не подходит т к нужна поддержка питона от 3.7, а IronPython сейчас только 3.4 и то альфа