1
我正在学习nodejs,并且检查了一些关于向子进程发送信号的例子,就像下面的代码一样,它说“孩子的SIGINT”处理程序应该是响应,而我没有得到任何输出。nodejs发送信号给子进程不起作用
// parent.js
var spawn = require('child_process').spawn;
var child = spawn('node', ['child.js']);
child.stdout.on('data', function(data) {
console.log('data from child: ' + data);
});
child.kill('SIGINT');
// child.js
console.log('child calling');
process.on('SIGINT', function() {
console.log('Received SIGINT signal');
});
当我打字
节点parent.js
为什么没有输出?甚至在child.js中输出“child call”?
希望有人帮助我吗?谢谢。
另外,我不清楚child.js何时执行,执行语句时?希望任何人都可以提供详细的解释?谢谢。
var child = spawn('node', ['child.js']);
谢谢@Aaron Dufour。我尝试了你的建议。有用。虽然我仍然不清楚你的话“它会等待的东西包括打开套接字,setTimeouts等。” 你的意思是在parent.js中的setTimeouts将打开子进程套接字? 你能否给出更详细的解释? 我也试过自己,我尝试在child.js的头部添加“process.stdin.resume()”,并在“SIGINT”处理程序中添加“process.stdin.end()”,它也起作用。你对这个决议的看法如何? 谢谢。 –
其实我不清楚你的意思是“开放套接字”?像“process.stdin.resume()”这样的隐式操作? –
打开套接字就像打开TCP连接或启动服务器(在子节点中)一样。你究竟在做什么?你现在正在做的事情看起来像一个测试,但如果你真正做了一件事情,它很可能会导致node.js继续运行。 –