В документации по дочерним процессам узла это предложение содержится в разделе child_process.spawn()
:
Вкл. Windows, установка options.detached
в * 1008. * позволяет дочернему процессу продолжать работу после выхода из родительского процесса.
Это звучит как (по крайней мере, Windows), когда вы оставляете options.detached
значение по умолчанию false
, spawn()
'процессы будут автоматически убиты. Это именно то поведение, которое мне нужно в моем приложении, и на самом деле я вызывал myChildProcess.kill( "SIGINT" )
в своем коде, но закомментировал его, и дочерние процессы все равно ушли, когда мое приложение закрылось. Так что это замечательно, но:
(1) Насколько я понимаю, необходимо сделать некоторые хитрые вещи с «объектами задания», как обсуждено здесь , чтобы сделать эту работу на Windows , Знаете ли вы, если Node делает что-то хитрое, чтобы убрать дочерние процессы go? Или, может быть, это проще, и Node просто хранит список идентификаторов порожденных процессов и убивает любые из них, которые все еще присутствуют при завершении работы? Что приводит к тесно связанному вопросу ...
(2) Если Node действительно делает что-то особенное для уничтожения дочерних процессов, знаете ли вы, есть ли такие случаи (например, какое-то приложение для cra sh) что побудило бы его выполнить и оставило бы дочерние процессы запущенными?
UPDATE : Чтобы уточнить, дочерние процессы, которые я запускаю в моем случае, являются Python процессами веб-сервера, а не другими Узел процессов. Я не знаю, есть ли разница в поведении между дочерним процессом Node и каким-либо другим дочерним процессом для целей этого вопроса.