节点立即为生成的外部应用程序触发 'close'(仅限 macOS)

Node fires 'close' for spawned external application immediately (macOS only)

我的Electron 应用程序需要打开一个外部程序并等待它关闭,然后再进行反应。在 Windows 这工作正常,但 macOS 有一些问题。

所以我的苹果代码是

const cp = require('child_process');
let child;
child = cp.exec('open -a Keynote \"'+pathToFile+'\"'), function(error, stdout, stderr){
    if(error) {
        throw error;
    }
}
child.on('close', function () {
    //do something when external application is closed
}

问题是,出于某种原因,进程在应用程序启动后立即发送 close 事件。有什么方法可以监控 Keynote 是否仍在 macOS 中打开,还是只是一个错误?

好的。我发现。如果有人遇到同样的问题:它需要用 -W 参数打开。所以

cp.exec('open -a Keynote \"'+pathToFile+'\"' +' -W')

成功了。