child_process 不该退出的时候退出
child_process quitting when it shouldn't
我有一个节点应用程序,使用 child_process 来获取一个非常大的文件。尽管设置了相关选项(或者我认为,它似乎立即以 'null' 为由终止。如果我手动 运行 命令就没问题。(.js / 事件线程继续 运行,所以不是那样。'...' 已编辑 URL)
const spawn = require('child_process').spawn;
var options = {stdio: 'ignore', detatched: true};
var ls = spawn('wget', ['http://...', '-O', './file.sav'], options);
console.log("PID is ", ls.pid);
ls.unref();
最后想通了。我在监视模式下是 运行 pm2(进程管理器)。每次 wget 开始写入磁盘时都会重新启动 Node 应用程序!
有趣的是,这是在开始写入磁盘时发生的,而不是等待 wget 完成写入文件。此外,它是如此之快,以至于即使代码取消引用该过程,也没有及时发生以防止该过程以 Node 应用程序结束。
通过在 pm2 的配置中排除正在写入的目录解决了这个问题。
我有一个节点应用程序,使用 child_process 来获取一个非常大的文件。尽管设置了相关选项(或者我认为,它似乎立即以 'null' 为由终止。如果我手动 运行 命令就没问题。(.js / 事件线程继续 运行,所以不是那样。'...' 已编辑 URL)
const spawn = require('child_process').spawn;
var options = {stdio: 'ignore', detatched: true};
var ls = spawn('wget', ['http://...', '-O', './file.sav'], options);
console.log("PID is ", ls.pid);
ls.unref();
最后想通了。我在监视模式下是 运行 pm2(进程管理器)。每次 wget 开始写入磁盘时都会重新启动 Node 应用程序!
有趣的是,这是在开始写入磁盘时发生的,而不是等待 wget 完成写入文件。此外,它是如此之快,以至于即使代码取消引用该过程,也没有及时发生以防止该过程以 Node 应用程序结束。
通过在 pm2 的配置中排除正在写入的目录解决了这个问题。