[英]Kill (like ctrl+c) exec (child process) on nodejs
我在 index.js 中有以下代碼:
var child = exec(
'node app.js --board=' + data.data.board + ' --link=' + data.data.link,
function (error, stdout, stderr) {
if (error) console.log('exec error: ' + error)
if (stderr) console.log('stderr: ' + stderr)
}
)
.stdout.on('data', function(log_data) {
console.log(log_data)
socket.emit('listener', { ty: 'user_p_logs', num: data.num, log: log_data })
fn(true)
})
這是run app.js
的代碼,但我無法在index.js
上停止這個子進程
我在index.js
嘗試了以下內容:
child.kill()
child.kill('SIGINT')
process.exit() // This stopped index.js, instead of its child.
更新:有答案嗎?
您分配給child
是.stdout.on
的返回值,它是stdout
事件發射器,而不是child
進程。 您需要將其作為子進程。 不要過度鏈接。 :-)
var child = exec(
'node app.js --board=' + data.data.board + ' --link=' + data.data.link,
function (error, stdout, stderr) {
if (error) console.log('exec error: ' + error)
if (stderr) console.log('stderr: ' + stderr)
}
);
child.stdout.on('data', function(log_data) {
console.log(log_data)
socket.emit('listener', { ty: 'user_p_logs', num: data.num, log: log_data })
fn(true)
});
然后, child.kill
應該工作。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.