我在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.
更新:有答案吗?
答案 0 :(得分:0)
您要分配给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
应该可以工作。