Ответ 1
Используйте child_process.fork()
. Он похож на spawn()
, но используется для создания целых новых экземпляров V8. Поэтому он специально используется для запуска новых экземпляров Node. Если вы просто выполняете команду, используйте spawn()
или exec()
.
var fork = require('child_process').fork;
var child = fork('./script');
Обратите внимание, что при использовании fork()
по умолчанию потоки stdio
связаны с родительским. Это означает, что все выходные и ошибки будут показаны в родительском процессе. Если вы не хотите, чтобы потоки, общие с родителем, вы можете определить свойство stdio
в параметрах:
var child = fork('./script', [], {
stdio: 'pipe'
});
Затем вы можете обрабатывать этот процесс отдельно от потоков основного процесса.
child.stdin.on('data', function(data) {
// output from the child process
});
Также обратите внимание, что процесс не выходит автоматически. Вы должны вызвать process.exit()
из порожденного процесса Node, чтобы он мог выйти.