Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/macos/8.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Objective c 从命令行启动MAC OSX目标应用程序的不同方式_Objective C_Macos_Cocoa_Applescript Objc - Fatal编程技术网

Objective c 从命令行启动MAC OSX目标应用程序的不同方式

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,那

我有一个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命令启动应用程序与如上所述直接调用应用程序二进制有什么区别?

调用

打开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
的效果与重定向无关。