【发布时间】:2020-07-19 18:21:11
【问题描述】:
我有一个 .app 文件,我正在通过 NSTask 运行,我希望线程在 .app 执行结束之前被阻塞。
我当前的代码是:
NSTask *task = [[NSTask alloc] init];
task.launchPath = @"/bin/bash";
task.arguments = [NSArray arrayWithObjects:@"-c", "/usr/bin/open myApp.app", nil];
[task launch];
[task waitUntilExit]; // doesn't guarantee task will wait until exit according to docs
我知道我可以使用NSTask.terminationHandler,但由于我有很多任务,我不想陷入回调地狱的境地(而且我不在乎一切是否会同步运行并需要一些时间)
(我也尝试在执行命令中添加nohup,但没有达到我想要的效果。)
有没有办法同步执行NSTask,等到执行结束?
【问题讨论】:
-
@matt,我尝试了你所有推荐的答案,但没有运气,我终于找到了问题:打开 .app 文件立即退出,但是打开 /Contents/MacOS/ 文件将等到应用程序完成执行。 (我会写它作为答案)。
标签: objective-c macos nstask