【发布时间】:2018-09-14 07:48:13
【问题描述】:
我有一个 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 秒来执行。我的问题是节点脚本在子进程退出后继续运行另外 10 秒。我知道PluginManager.exe 何时完成,因为我可以看到它从 Windows 任务管理器进程列表中消失。
是什么让 Node 进程运行这么长时间?我可以做些什么来确保它在子进程退出后立即退出?
【问题讨论】:
-
你可以试试
execFile('PluginManager.exe', ['/install'], {shell: true})看看有没有帮助? -
@TarunLalwani 感谢您的建议,但我得到了相同的结果。
-
您使用的是哪个版本的 Node?span>
-
是否有任何衍生的进程有这个问题?有exe吗?如果我们不能复制,就很难提供解决方案。
-
@KevinPeno,是的,它是
exe。有趣的是,并不是所有的exes 都这样做!我会做更多的测试来找到一种模式并确定是哪种种类 exe 导致了这种情况。感谢您的评论。
标签: node.js windows child-process