Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/374.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 如何用派生的子进程替换node.js进程?_Javascript_Node.js_Terminal_Spawn_Child Process - Fatal编程技术网

Javascript 如何用派生的子进程替换node.js进程?

Javascript 如何用派生的子进程替换node.js进程?,javascript,node.js,terminal,spawn,child-process,Javascript,Node.js,Terminal,Spawn,Child Process,我正在构建一个node.js应用程序并将其打包为二进制文件(使用),如果有更新,我希望更新并重新启动该过程。当我生成新进程并退出时,我希望新进程接管终端,但这并没有发生。以下是我正在做的(使用): 子进程在终端上打印其所有控制台日志,但进入后台。我哪里做错了?我正在使用OS X Mavericks。您可以这样做: 启动应用程序时,请通过另一个脚本启动它。这将产生子进程,并根据需要杀死它 母亲.js var child; var spawn = require('child_process').s

我正在构建一个node.js应用程序并将其打包为二进制文件(使用),如果有更新,我希望更新并重新启动该过程。当我生成新进程并退出时,我希望新进程接管终端,但这并没有发生。以下是我正在做的(使用):


子进程在终端上打印其所有控制台日志,但进入后台。我哪里做错了?我正在使用OS X Mavericks。

您可以这样做:

启动应用程序时,请通过另一个脚本启动它。这将产生子进程,并根据需要杀死它

母亲.js

var child;
var spawn = require('child_process').spawn;
var argv =  process.argv;
argv.shift();
argv.shift();

function startChild(){
  console.log("STARTING", process.execPath, "child.js", argv);
  child = spawn(process.execPath,  ["child.js", argv], {
    cwd: process.cwd(),
    env: process.env,
    detached: true
  });
  child.on('error', function(e){console.log(e)});
  child.stdout.pipe(process.stdout);
  console.log("STARTED with PID:", child.pid);
}


process.on('SIGQUIT', function() {
  child.kill();
  startChild();
});
startChild();
child.js

(function(){
  console.log("Started child process");
  setInterval(function(){console.log("running")}, 1000);
})();
然后你可以发送ctrl+c来杀死这个东西。从更新函数重新加载send ctrl+\或在mother.js中调用

(function(){
  console.log("Started child process");
  setInterval(function(){console.log("running")}, 1000);
})();