如何分叉另一个模块的进程
How to fork a process of another module
TL;DR:如何分叉一个位于当前 运行ning 进程之外的进程?
我正在尝试使用 child_process
的 Nodejs 以便在父进程退出时启动另一个 nodejs 进程。
我使用 exec
成功执行了进程,但我需要子进程独立于父进程,这样父进程就可以退出而不等待子进程,因此我尝试使用 spawn
detached: true, stdio: 'ignore'
选项和 unref()
过程:
setting options.detached to true makes it possible for the child process to continue running after the parent exits.
spawn('node MY_PATH', [], {detached: true, stdio: 'ignore'}).unref();
这会产生 :
node MY_PATH ENOENT
错误。不幸的是我没能解决。
在使用 spawn
遇到困难并再次阅读 documentation 之后,我认为我应该实际使用 fork
:
The child_process.fork() method is a special case of child_process.spawn() used specifically to spawn new Node.js processes.
fork()
没有将命令作为其第一个参数,而是一个 modulePath
,我似乎不适合,因为我正在尝试将 运行 作为脚本子进程不在当前 运行ning 进程的目录中,而是在他的依赖项中。
回到开头 TL;DR - 如何分叉一个位于当前 运行ning 进程之外的进程?
如有任何帮助,我们将不胜感激!
编辑:
提供 spawn
ENOENT 错误的解决方案也很有帮助!
下面的代码应该可以让你做你需要的。
var Path = require('path');
var Spawn = require('child_process').spawn;
var relative_filename = '../../node_modules/bla/bla/bla.js';
Spawn('node', [Path.resolve(__dirname, relative_filename)], {detached: true, stdio: 'ignore'}).unref();
process.exit(0);
TL;DR:如何分叉一个位于当前 运行ning 进程之外的进程?
我正在尝试使用 child_process
的 Nodejs 以便在父进程退出时启动另一个 nodejs 进程。
我使用 exec
成功执行了进程,但我需要子进程独立于父进程,这样父进程就可以退出而不等待子进程,因此我尝试使用 spawn
detached: true, stdio: 'ignore'
选项和 unref()
过程:
setting options.detached to true makes it possible for the child process to continue running after the parent exits.
spawn('node MY_PATH', [], {detached: true, stdio: 'ignore'}).unref();
这会产生 :
node MY_PATH ENOENT
错误。不幸的是我没能解决。
在使用 spawn
遇到困难并再次阅读 documentation 之后,我认为我应该实际使用 fork
:
The child_process.fork() method is a special case of child_process.spawn() used specifically to spawn new Node.js processes.
fork()
没有将命令作为其第一个参数,而是一个 modulePath
,我似乎不适合,因为我正在尝试将 运行 作为脚本子进程不在当前 运行ning 进程的目录中,而是在他的依赖项中。
回到开头 TL;DR - 如何分叉一个位于当前 运行ning 进程之外的进程?
如有任何帮助,我们将不胜感激!
编辑:
提供 spawn
ENOENT 错误的解决方案也很有帮助!
下面的代码应该可以让你做你需要的。
var Path = require('path');
var Spawn = require('child_process').spawn;
var relative_filename = '../../node_modules/bla/bla/bla.js';
Spawn('node', [Path.resolve(__dirname, relative_filename)], {detached: true, stdio: 'ignore'}).unref();
process.exit(0);