Обновление: Предыдущий ответ был о том, как закрыть стандартный ввод для процесса, порожденного из Perl, но вопрос на самом деле о том, как выполнить задачу в .NET.
Идея та же. Вы хотите закрыть дескриптор стандартного потока ввода нового процесса. В .NET это можно сделать с помощью
app.StandardInput.Close()
сразу после звонка на app.Start()
.
(я думаю, вы также захотите установить app.StartInfo.RedirectStandardInput = true
, но я не большой программист .NET и не уверен в этом).
NUL
- это соглашение Windows, подобное Unix /dev/null
. Но в Unix > NUL
создаст файл с именем "NUL"
, а < NUL
вызовет сбой вашего системного вызова (т. Е. system
, backticks и т. Д.), Если не будет файла с именем "NUL"
.
Тем не менее, в Perl есть переносимые способы закрытия стандартного ввода для порожденного процесса. Например:
open $fh, "| $command > outputfile 2> errorfile";
close $fh;
запустит $command
и сразу закроет стандартный дескриптор ввода $command
, как если бы вы запустили команду из командной строки и сразу нажали ^D
.