我正在使用下面的代碼來產生一個子進程,要求用戶輸入,然後它應該完成,但是從未觸發close
事件。當寫入STDIN時,NodeJS子進程沒有觸發關閉事件
const spawn = require('child_process').spawn;
const p = spawn('script', ['that', 'prompts', 'user', 'for', 'input']);
process.stdin.on('data', (data) => {
p.stdin.write(data);
});
p.on('close', (code) => {
console.log(`child process closed with code ${code}`);
});
如果我產卵,不提示用戶輸入的過程(如ls´), the
close`事件觸發沒有任何問題。我懷疑一些關於直接從父寫入子進程的STDIN是防止它終止但我不明白爲什麼。我在這裏丟失了一些明顯的東西嗎?
此代碼按原樣工作。用'bc'試一下並輸入'quit'。問題在於你產生的任何東西在你認爲應該退出的條件下不會實際退出。 – pvg