У меня есть два отдельных приложения node. Я хотел бы, чтобы один из них смог запустить другой в какой-то момент кода. Как я могу это сделать?
Запустите приложение node, используя node.js?
Ответ 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, чтобы он мог выйти.
Ответ 2
Вы можете использовать модуль child_process, это позволит выполнять внешние процессы.
var childProcess = require('child_process'),
ls;
ls = childProcess.exec('ls -l', function (error, stdout, stderr) { if (error) {
console.log(error.stack);
console.log('Error code: '+error.code);
console.log('Signal received: '+error.signal); } console.log('Child Process STDOUT: '+stdout); console.log('Child Process STDERR: '+stderr); });
ls.on('exit', function (code) { console.log('Child process exited with exit code '+code); });
http://docs.nodejitsu.com/articles/child-processes/how-to-spawn-a-child-process