#node.js #exec
Вопрос:
Я пытаюсь выполнить сценарий оболочки в электронном приложении с помощью exec
. Я хочу отправить дочернему процессу некоторые данные через stdin. У меня есть кое-что, похожее на это.
let childProcess = exec("echo-script"); childProcess.stdin.write(getSelection().toString()); childProcess.stdin.end()
Это прекрасно работает, когда я что-то выбираю. Проблема в том, что если выбора нет, сценарий не получает stdin. например, если мой сценарий просто
ls -l /dev/stdin ls -l /dev/fd/0
Тогда мой вывод будет
lr-xr-xr-x 1 root wheel 0 Aug 2 20:42 /dev/stdin -gt; fd/0 s--------- 0 dathan users 0 Dec 31 1969 /dev/fd/0
И если я попытаюсь, скажем data="$(lt;/dev/stdin)"
, получить ошибку «отказано в разрешении» при чтении stdin.
Но из оболочки, если бы я это сделал echo "" | ./echo-script
, то получил бы другое поведение:
lr-xr-xr-x 1 root wheel 0 Aug 2 20:42 /dev/stdin -gt; fd/0 prw-rw---- 0 dathan users 1 Oct 27 21:26 /dev/fd/0
И я не получаю ошибку разрешений при входе stdin
в свою переменную.
Как я могу заставить возвращаемый дочерний узел процесса exec
вести себя более похоже echo "" | ./echo-script
в этом отношении? Т. Е. Предоставить ему пустой stdin вместо отсутствия stdin?