Я хочу записать данные в существующий процесс-х STDIN
от внешних процессов в окнах, и нашел аналогичный вопрос для Linux:
Запись в поток ввода запущенного процесса в окнах
How to write data to existing process's STDIN from external process?
How do you stream data into the STDIN of a program from different local/remote processes in Python?
https://serverfault.com/questions/443297/write-to-stdin-of-a-running-process-using-pipe
и т. Д., Но теперь я хочу знать, как я могу это сделать в окнах?
Я пытаюсь с этим кодом, но я получил ошибку!
также я пытаюсь запустить программу и отправить stdin на эту треску, но снова ошибка!
В CMD:
type my_input_string | app.exe -start
my_input_string | app.exe -start
app.exe -start < pas.txt
В питона:
p = subprocess.Popen('"C:\app.exe" -start',
stdin=subprocess.PIPE, universal_newlines=True, shell=True)
grep_stdout = p.communicate(input='my_input_string')[0]
Ошибка заключается в следующем:
ReadConsole() не удалось: Недопустимый дескриптор.
И в C#:
try
{
var startInfo = new ProcessStartInfo();
startInfo.RedirectStandardInput = true;
startInfo.FileName = textBox1.Text;
startInfo.Arguments = textBox2.Text;
startInfo.UseShellExecute = false;
var process = new Process();
process.StartInfo = startInfo;
process.Start();
Thread.Sleep(1000);
var streamWriter = process.StandardInput;
streamWriter.WriteLine("1");
}
catch (Exception ex)
{
textBox4.Text = ex.Message+"\r\n"+ex.Source;
}
В C# с этим кодом App.exe
(whis командной строки приложения начинается с новым процессом) разбился! но в приложении C# у меня нет никакого исключения!
и я думаю, что для UseShellExecute = false;
Кроме того, когда я использую из C#
и если не запускайте приложение в фоновом режиме я могу найти процесс и использовать из sendkeys
отправить my_input_string
на это, но это не хорошая идея, потому что пользователь см. командную строку при использовании графического интерфейса пользователя!
Как я могу отправить stdin
без ошибок только с CMD или создать скрипт в python или C#!
Есть идеи?
С уважением.
Эх, извините, но я не могу понять ... кто пишет кому? Python - C#? C# на Python? Вы хотите общий случай? – NightShadeQueen
@NightShadeQueen Я хочу, чтобы написать stdin из python или C#, я пытаюсь написать скрипт в python и запустить его с C#. – Sara
Проверьте модуль 'errorwindow.py' в [этом ответе] (http://stackoverflow.com/a/18091356/355230), потому что он делает то, что, я думаю, вы пытаетесь сделать. Основное различие заключается в том, что вывод одного процесса отправляется другому, печатая его (или записывая его в 'stderr'). Тот же модуль также использовался для выполнения чего-то подобного в этом [другом ответе] (http://stackoverflow.com/a/27932575/355230) моего вопроса по соответствующему вопросу. – martineau