node.js - 为什么我不能在 windows 上的 nodejs 中杀死我的子进程?

标签 node.js winapi process signals

exec = require('child_process').exec;

child = exec('node child.js');
child.stdout.pipe(process.stdout);
child.kill('SIGKILL');

function wait() {
    setTimeout(wait, 1000);
    child.kill('SIGKILL');
}
wait();

上面的代码不起作用。 child 开始并将无限期地继续写入输出。我不知道如何杀死这个子进程。我在 Windows 7 中运行 Node v0.11.9。我知道 Windows 不使用 POSIX 信号,但发送它“WM_QUIT”会导致异常。在标准输入上设置事件协议(protocol)是我最好的解决方案吗?

最佳答案

对于当前接受的答案,这仍然对我不起作用。您可以在 Windows 上使用的一种解决方法是调用 Windows taskkill 程序来为您终止子进程。不太好,但它的工作原理。当您生成子对象时,您会获得一个存储在生成时返回的子对象中的 ProcessID (pid),您可以使用 taskkill 来终止该进程。

var spawn = require('child_process').spawn;    
spawn("taskkill", ["/pid", child.pid, '/f', '/t']);

关于node.js - 为什么我不能在 windows 上的 nodejs 中杀死我的子进程?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23706055/

相关文章:

node.js - multer,multiparty和connect-multiparty + Nodejs之间的区别

C++:GetKeyState() 必须运行一次

c - 父子进程控制

c++ - CreateProcess() C++ 文件未找到

node.js bodyParser 错误

javascript - 上传图片并使用 restify 调整大小

C++ TCP 服务器-客户端小问题

c++ - Windows中的变量类型

c# - 在磁盘上创建虚拟文件

node.js - 错误(断言错误 : "undefined" === "function") when deploying Meteor app