gpt4 book ai didi

node.js - child_process.execFile 退出缓慢

转载 作者:IT老高 更新时间:2023-10-28 23:22:03 27 4
gpt4 key购买 nike

我有一个 Node 脚本,它以这种方式调用外部程序 (PluginManager.exe):

const util = require('util');
const execFile = util.promisify(require('child_process').execFile);

const process = execFile('PluginManager.exe', ['/install']);
process
.then(({stdout, stderr}) => console.log('done', stdout, stderr))
.catch(e => console.log(e));

PluginManager.exe 需要 8 秒来执行。我的问题是 Node 脚本在子进程退出后继续运行另外 10 秒。我知道 PluginManager.exe 何时完成,因为我可以看到它从 Windows 任务管理器进程列表中消失。

是什么让 Node 进程运行这么长时间?我可以做些什么来确保它在子进程退出后立即退出?

最佳答案

也许它正在等待输入并在 10 秒后超时?

尝试使用 .end() 关闭标准输入,如 https://nodejs.org/api/child_process.html#child_process_subprocess_stdin 中所述

(在这种用法中,您需要 execFile 的原始返回值,所以不要 promise ,根据 https://stackoverflow.com/a/30883005/1105015)

例如

const util = require('util');
const execFile = require('child_process').execFile;

const process = execFile(
'PluginManager.exe', ['/install'], (e, stdout, stderr) => {
if (e) {
console.log(e);
} else {
console.log('done', stdout, stderr));
}});
process.stdin.end();

关于node.js - child_process.execFile 退出缓慢,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/49656252/

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