我想使用子进程通过setTimeout调用一个函数,该子进程可能会在setTimeout发生之前退出。
1)我假设如果子进程调用该函数(即使它是在外部定义的),如果子进程退出,setTimeout将被取消。这是对的吗?
2)如果是这样,让子进程向父进程发出信号以执行setTimeout是否可行,或者是否有更好的方法来实现这一目标?
谢谢!
我不确定我是否完全理解,但让我提供一些可能适用的链接和示例。
主进程和子进程之间发送和接收消息可以通过child.send/process.send来实现,它是child_process模块和集群的一部分。
例如,当子进程向主进程发送消息时清除 setTimeout:
var cp = require('child_process');
var child = cp.fork(__dirname + '/sub.js');
var timer = setTimeout(function(){
console.log('timed out');
}, 5000);
child.on('message', function(msg) {
console.log(msg);
clearTimeout(timer);
});
孩子
setTimeout(function() {
console.log('finished doing some long task');
process.send({ status: 'done' });
}, 3000); // set this to something larger than 5000ms to see the timeout
您可能还对子进程执行类似操作的退出和关闭事件感兴趣。