2016-04-05 2 views
0

Я создаю библиотеку, которая запустит процесс, который затем переводит child_processes; это очень похоже на использование кластерного модуля с сервером, за исключением моего случая, ни родительский/мастер, ни дочерние_процессы не являются серверами.Node.js: Инициировать группу процессов, чтобы я мог убить позже, если мне нужно

Что мне нужно сделать, так это дать возможность пользователю убить процесс, как только начнется все это. Единственный способ, которым я знаю это сделать, - заставить родительский процесс прослушивать определенный порт. Затем я могу общаться с родительским процессом, и это может быть причиной убийства child_processes.

Единственная проблема с этим, если пользователь запускает две или несколько разных групп процессов бок о бок, тогда мне нужно будет увеличивать порт, который каждый слушает, а затем пользователь фактически не знает что порты больше.

Кто-нибудь знает о проблеме, которую я пытаюсь решить, и есть ли хорошее решение для этой ситуации?

Если я в конечном итоге прослушиваю конкретный порт, должен ли я использовать модуль net из основного узла? Вероятно, опция net.Socket() https://nodejs.org/api/net.html#net_class_net_socket

Похоже, что мне нужно сделать этот процесс на сервере, чтобы он мог прослушивать порт и легко получать сообщения.

ответ

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.'); 
}); 
+0

ОК, может работать, но как пользователь моей библиотеки знает идентификатор процесса? –

+0

Когда я запускаю родительский процесс, как пользователь знает, к какому процессу нужно отправить сигнал SIGINT? –

+0

ой, вы можете использовать control-c, но что, если это фоновый процесс, я имею в виду. –

Смежные вопросы