我正在创建一个库,它将启动一个进程然后分叉child_processes;这很像将集群模块与服务器一起使用,除非在我的情况下,父/主服务器和子服务器都不是服务器。
我需要做的是能够在整个事情开始后让用户选择终止进程。我知道这样做的唯一方法是让父进程侦听特定端口。然后我可以与父进程通信,它可以负责杀死child_processes。
这个问题的一个问题是,如果用户并排运行两个或多个不同的进程组,那么我将不得不增加每个侦听的端口,然后用户实际上不知道什么港口了。
有没有人知道我要解决的问题,这种情况有一个很好的解决方案吗?
如果我最终收听特定端口,我应该使用核心节点的net模块吗?可能是net.Socket()选项https://nodejs.org/api/net.html#net_class_net_socket
似乎我需要将此过程转换为服务器,以便它可以侦听端口并轻松接收消息。
答案 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.');
});