簡體   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