C# Процесс - подача трубы на вход - PullRequest
0 голосов
/ 11 февраля 2020

В Python Я могу пропустить все запросы «Нажмите любую клавишу для продолжения ...» подпроцесса, указав stdin=subprocess.DEVNULL в качестве аргумента subprocess.Popen. Однако в C# я не уверен, как передать поток devnull (Stream.Null?) В Process.StandardInput.

Как пропустить произвольное число «Нажмите любую клавишу, чтобы продолжить .. . "подсказывает в подпроцессе C#?

1 Ответ

1 голос
/ 15 апреля 2020

При CliWrap все каналы перенаправляются по умолчанию на /dev/null (вы можете настроить их).

Таким образом, вы можете сделать:

await Cli.Wrap("child.exe").WithArguments("foo bar").ExecuteAsync();

Если вы хотите трубу, вы можете использовать трубу оператора:

await using var input = File.Open("input.txt");
await using var output = File.Create("output.txt");
await using var error = File.Create("error.txt");

var cmd = input | Cli.Wrap("child.exe").WithArguments("foo bar") | (output, error);

await cmd.ExecuteAsync();
...