gpt4 book ai didi

javascript - 如何用生成的子进程替换 node.js 进程?

转载 作者:搜寻专家 更新时间:2023-10-31 23:09:43 24 4
gpt4 key购买 nike

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

var spawn = require('child_process').spawn;
var child = spawn(process.execPath, process.argv, {
cwd: process.cwd(),
env: process.env,
detached: true,
stdio: 'inherit'
});
child.unref();
process.exit();

子进程在终端上打印其所有控制台日志,但进入后台。我哪里错了?我正在使用 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 来杀死它。要重新加载,请发送 ctrl+\或从您的更新函数调用 mother.js。

关于javascript - 如何用生成的子进程替换 node.js 进程?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21326429/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com