Ответ 1
Проблема заключается в том, что вы b.js
сразу заканчиваете и закрываете свой стандарт, что вызывает ошибку в a.js
, потому что его стандартный выход отключился, и вы не справились с этой возможностью. У вас есть два варианта: дескриптор stdout закрывается в a.js
или принимает ввод в b.js
.
Фиксация a.js
:
process.on("SIGPIPE", process.exit);
Если вы добавите эту строку, она просто сдастся, когда никто больше не будет читать свой вывод. В SIGPIPE, вероятно, есть что-то лучше, в зависимости от того, что делает ваша программа, но ключ состоит в том, чтобы остановить console.log
ing.
Фиксация b.js
:
#!/usr/bin/env node
var stdin = process.openStdin();
var data = "";
stdin.on('data', function(chunk) {
data += chunk;
});
stdin.on('end', function() {
console.log("DATA:\n" + data + "\nEND DATA");
});
Конечно, вам не нужно ничего делать с этими данными. Ключ должен иметь что-то, что поддерживает процесс; если вы подходите к нему, stdin.on('data', fx)
кажется полезной.
Помните, что один из этих параметров предотвратит эту ошибку. Я ожидаю, что второй будет наиболее полезен, если вы планируете переключение между программами.