Выполнение команды конвейера в стиле Unix? - PullRequest
0 голосов
/ 27 октября 2011

Есть ли способ выполнить следующую команду через C #?

.\binary.exe < input > output

Я пытаюсь использовать System.Diagnostics.Process, но мне было интересно, есть ли прямая команда в стиле exec в C #.Есть предложения?

Ответы [ 2 ]

1 голос
/ 27 октября 2011

Не напрямую, но вы можете перенаправить вывод из потока консоли (как вы, возможно, поняли, учитывая, что вы пытаетесь использовать класс Process), как отмечено здесь в MSDN: http://msdn.microsoft.com/en-us/library/system.diagnostics.process.standardoutput.aspx

Здесь также есть пример для SO: Перенаправить вывод консоли в текстовое поле в отдельной программе

Оберните это в свой собственный класс, и он в основном станет командой в стиле "exec".

1 голос
/ 27 октября 2011

Обычно вам нужно перенаправить стандартный ввод и вывод в вашу программу и записать их в нужные вам файлы

ProcessStartInfo info = new ProcessStartInfo("binary.exe");
info.RedirectStandardInput = true;
info.RedirectStandardOutput = true;
Process p = Process.Start(info);

string Input;
// Read input file into Input here

StreamWriter w = new StreamWriter(p.StandardInput);
w.Write(Input);
w.Dispose();

StreamReader r = new StreamReader(p.StandardOutput);
string Output = r.ReadToEnd();
r.Dispose();

// Write Output to the output file

p.WaitForExit();
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...