Узел дочернего процесса не может выполняться отдельно

Я пытаюсь раскрутить дочерний процесс узла с

child_process.fork("child.js")

и пусть он скажет живым после выхода родителя. Я попытался использовать отключенную опцию так:

child_process.fork("child.js", [], {detached:true});

Что работает при использовании spawn, но когда значение detached равно true с использованием fork, оно просто молча завершается сбоем, даже не выполняя child.js.

Я также пытался

var p = child_process.fork("child.js")
p.disconnect(); 
p.unref();

Но ребенок все еще умирает, когда родитель. Любая помощь или понимание будет принята с благодарностью.

РЕДАКТИРОВАТЬ:

Версия узла: v5.3.0 Платформа: Windows 8.1 Код:

//Parent
var child_process = require("child_process");

var p;
try{
  console.log(1)
  p = child_process.fork("./child.js")
  console.log(2)
} catch(e){
  console.log(e)
}
p.on('error', console.log.bind(console))

p.disconnect();
p.unref();

//To keep process alive
setTimeout(() => {
  console.log(1);
}, 100000);

-

//Child
var fs = require("fs");

console.log(3);

fs.writeFileSync("test.txt", new Date().toString());

setTimeout(()=>{
  console.log(1);
}, 100000);

1 ответ

Я предполагаю, что вы выполняете свой родительский файл из командной строки, поэтому, вероятно, "кажется", что разветвленный дочерний элемент не выполняется. В действительности, когда родительский процесс завершается, терминал перестает ждать и, таким образом, печатает новую строку в ожидании вашей следующей команды. Это создает впечатление, что ребенок не выполняет, но поверьте мне, это так. Также нет "отдельного" параметра для child_process.fork

Добавьте несколько операторов console.log() в ваш дочерний процесс, и вы увидите печать ввода в своем терминале даже после выхода из родительского процесса. Если вы этого не сделаете, это потому, что ваш ребенок преждевременно выходит из-за ошибки. Запустите ваш дочерний процесс напрямую, чтобы отладить его, прежде чем вызывать его из родительского процесса.

Проверьте этот быстрый пример:

Надеюсь это поможет.

Другие вопросы по тегам