杀死CPU绑定子进程

时间:2015-04-21 01:00:29

标签: node.js

我有一个使用child_process.fork生成的子进程,并希望终止它。问题是子进程执行了一些冗长的CPU绑定计算,我无法控制它。也就是说,无法重构CPU绑定代码片段以使用process.nextTick或polling。

一个非常简单的例子:

parent.js

var cp = require('child_process');
var child = cp.fork('child.js');

child.js

...
while(true){} // lengthy computation which I cannot modify
...

是否可以终止它?优选的方式是允许在儿童中捕捉退出事件以进行一些清理?

使用child.kill()发送SIGTERM / SIGKILL / etc不会 似乎适用于Windows。我假设即使它适用于其他操作系统,它也不会因为孩子在进行计算时无法处理事件而终止进程。

1 个答案:

答案 0 :(得分:0)

我通过该进程的using the PID以杂乱的方式完成了这一操作并在操作系统级别将其删除。

不确定如何在Windows中执行此操作,但在Linux / mac中我已完成:

var cp      = require('child_process'),
    badJob  = cp.fork('badFile.js');

cp.execSync('kill -9 ' + badJob.pid);

The signal 9 is caught at the Kernel level,因此该过程的条件无关紧要。

编辑:在Windows中,您可以使用taskkill代替kill。例如:

cp.execSync('taskkill /f ' + badJob.pid);