Задать вопрос
nikitao
@nikitao

Почему C# Process RedirectStandardInput не работает с python.exe?

Всем привет. Почему то вот этот пример
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 и то альфа
  • Вопрос задан
  • 207 просмотров
Подписаться 2 Средний 2 комментария
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы