Node.js:启动进程组,以便我可以在以后需要

时间:2016-04-05 04:36:12

标签: node.js process kill sigkill

我正在创建一个库,它将启动一个进程然后分叉child_processes;这很像将集群模块与服务器一起使用,除非在我的情况下,父/主服务器和子服务器都不是服务器。

我需要做的是能够在整个事情开始后让用户选择终止进程。我知道这样做的唯一方法是让父进程侦听特定端口。然后我可以与父进程通信,它可以负责杀死child_processes。

这个问题的一个问题是,如果用户并排运行两个或多个不同的进程组,那么我将不得不增加每个侦听的端口,然后用户实际上不知道什么港口了。

有没有人知道我要解决的问题,这种情况有一个很好的解决方案吗?

如果我最终收听特定端口,我应该使用核心节点的net模块吗?可能是net.Socket()选项https://nodejs.org/api/net.html#net_class_net_socket

似乎我需要将此过程转换为服务器,以便它可以侦听端口并轻松接收消息。

1 个答案:

答案 0 :(得分:1)

只需使用child_process模块​​启动,子进程将在父进程终止时终止。

然后向父母发送SIGINT或SIGHUP或SIGKILL等信号。见https://nodejs.org/api/process.html#process_signal_events

// Start reading from stdin so we don't exit.
process.stdin.resume();

process.on('SIGINT', () => {
  console.log('Got SIGINT.  Press Control-D to exit.');
});