Tag: 信号

在Windows上处理Node.js中的CTRL + C事件

我正在处理一个节点项目,我想在退出时写入一些内存。 我认为这很简单: process.on('exit', function () { //handle your on exit code console.log("Exiting, have a nice day"); }); 但是,当收到CTRL + C时,此代码不会执行(在Windows上)。 鉴于这是事实上的退出节点的方式,这似乎有点问题。 此时我尝试处理信号(on。('SIGINT',…)),结果出现错误: node.js:218 throw e; // process.nextTick错误或第一次打勾时发生'错误'事件^错误:EventEmitter没有这样的模块。 (node.js:403:27)在对象。 (Module.js:452:10)在Module._compile(module.js:434:26)处的C:\ Users \ Mike \ workspace \ NodeDev \ src \ server.js:5: Module.load(module.js:353:32)在Function._load(module.js:310:12)在Array.0(module.js:472:10)在EventEmitter._tickCallback(node.js:209:41) ) closures到一个快速的谷歌和它看来节点根本不处理Windows上的信号和CTRL + C实际上不会触发“退出”事件。 上述错误不应该在* Nix系统上退出。 但是,closuresWindows平台对我来说不是一个有效的select,所以我需要一个解决方法。 有没有办法处理由用户按CTRL + C终止脚本导致的节点中的退出事件?

为什么我不能在windows上的nodejs中终止我的subprocess?

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(); 上面的代码不起作用。 孩子开始,并将继续无限期地写输出。 我无法弄清楚如何杀死这个孩子的过程。 我在Windows 7中运行节点v0.11.9。我知道Windows不使用POSIX信号,但是发送'WM_QUIT'会导致exception。 我的最佳解决scheme是在stdin上设置一个事件协议?