当一个子进程接收到一个SIGINT时,我想做一些清理工作。然后我想让父进程知道子进程退出时有一个SIGINT。
第一部分很简单,但第二部分并不像下面的例子所展示的那样。有什么方法可以让最初接收到的信号通过吗?
process.on("SIGINT", () => {
// Do some cleanup here
process.exit() // No way to pass the the original signal "SIGINT!", since exit(<code>) only excepts 1 argument.
})
// Therefore, 'signal is never set here
parent.child.on("exit", (code, signal) => {
// signal is empty
})
1条答案
按热度按时间nkoocmlb1#
是的,它是。
可以使用
process.kill()
方法在清理完成后将SIGINT
信号发送到子进程。使用
SIGINT
信号退出子进程,然后可以使用child_process.on('exit')
事件的第二个参数访问父进程中的信号值。总之,当父进程接收到
SIGINT
信号时,它将执行清除,然后使用kill()
方法向子进程发送SIGINT
信号。然后,子进程将收到
SIGINT
信号并退出,状态代码为0。然后,父进程可以访问exit
事件侦听器中的信号值。