我的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中打开,还是只是一个bug?
好我发现。如果有人遇到同样的问题:必须使用-W
Parameter打开它。所以
cp.exec('open -a Keynote \"'+pathToFile+'\"' +' -W')
完成技巧。