繁体   English   中英

在 nodejs 上杀死(如 ctrl+c)exec(子进程)

[英]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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM