簡體   English   中英

使用后如何殺死分叉的子進程?

[英]How do I kill forked child process after use?

我有這個功能並 fork 一個子進程在后台運行繁重的工作。 work模塊完成工作后發送消息。 如何終止或關閉分叉進程?

function doWork() {
    var child = cp.fork(__dirname + '/work');
    child.on('message', function(m) {
      console.log('completed: ' + m);
      // try to kill child process when work signals it's done
      child.kill('SIGHUP');
    });
    child.send({
      msg: 'do work',
      name: self.myname
    });
}

-編輯-

我試過child.kill('SIGHUP')child.kill(); 當工作信號完成時。 我似乎沒有殺死這個過程。 如果我做ps | grep node ps | grep node ,它仍然顯示工作進程是活動的。 我錯過了什么?

我希望我不會太遲!

您可以嘗試獲取分叉子進程的 pid 並將其作為參考傳遞給子進程,當工作完成時,將 pid 與完成信號一起發送,您可以根據 pid 終止進程。

function doWork() {
    var child = cp.fork(__dirname + '/work');
    child.on('message', function(m) {
        //try to pass pid along with the signal from child to parent
        console.log('completed: ' + m);
        //killing child process when work signals it's done
        process.kill(m.pid);
    });
    child.send({
        msg: 'do work',
        name: self.myname,
        pid : child.pid // passing pid to child
    });
}

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM