Objective c 从命令行启动MAC OSX目标应用程序的不同方式
我有一个MAC OSX objective C应用程序,比如first.app,其中我使用具有管理员权限的NSAppleScript运行shell脚本。此脚本缩进以启动另一个objective C应用程序,比如second.app 当您在shell脚本中使用open命令例如:“opensecond.app”时,它可以正常工作 但是,如果您通过在shell脚本中调用second.app的二进制Ex:“/second.app/Contents/MacOS/second”来启动second.app,那么在second.app关闭之前,控件不会返回到first.app。当我们关闭第二个.app时,第一个.app将恢复 从open命令启动应用程序与如上所述直接调用应用程序二进制有什么区别?调用Objective c 从命令行启动MAC OSX目标应用程序的不同方式,objective-c,macos,cocoa,applescript-objc,Objective C,Macos,Cocoa,Applescript Objc,我有一个MAC OSX objective C应用程序,比如first.app,其中我使用具有管理员权限的NSAppleScript运行shell脚本。此脚本缩进以启动另一个objective C应用程序,比如second.app 当您在shell脚本中使用open命令例如:“opensecond.app”时,它可以正常工作 但是,如果您通过在shell脚本中调用second.app的二进制Ex:“/second.app/Contents/MacOS/second”来启动second.app,那
打开Second.app
与双击Finder中的应用程序图标相同。应用程序通过LaunchServices启动,并且open
命令立即返回
召唤
/path/to/Second.app/Contents/MacOS/Second
直接启动应用程序(无LaunchServices),仅在应用程序终止时返回。谢谢。这真的很有用。我有一个疑问,在直接运行二进制文件时,我们可以使其在backgroung命令中运行“/path/to/Second.app/Contents/MacOS/Second 2>&1&”。在这种情况下,脚本终止。但仍然是第一个。应用程序未恢复。您知道原因吗?NSAppleScript是否会等待应用程序在后台运行?@user1336309:对不起,我不知道。您可以尝试
nohup/path/to/Second.app/Contents/MacOS/Second>/dev/null 2>&1
,这可能会有所帮助。nohup将标准输出重定向到该文件。它没有帮助。再次感谢。@user1336309:更准确地说,/dev/null
将标准输出重定向到该文件,而2>&1
将stderr重定向到stdout(因此它们都转到同一个位置)nohup
的效果与重定向无关。