如何在Objective C(Foundation框架)中获取命令行工具的可执行文件路径?

Ria*_*iaz 4 objective-c

我正在尝试找出一种方法来识别Objective C中命令行工具的可执行路径.

因此,如果可执行文件是/ Applications/Utils/MyTool,那么该方法将返回/ Applications/Utils

我正在使用Foundation框架.

mip*_*adi 9

我假设/Applications/Utils/MyTool,你的意思是"应用程序"目录中的"Utils"目录中名为"MyTool"的应用程序(实际上是路径/Applications/Utils/MyTools.app).在这种情况下,您可以/Applications/Utils使用以下代码获取应用程序所在的目录():

NSString *appParentDirectory = [[[NSBundle mainBundle] bundlePath] stringByDeletingLastPathComponent];
Run Code Online (Sandbox Code Playgroud)

  • 似乎`NSBundle`*应该*在AppKit中,因为命令行应用程序通常没有捆绑包; 但正如你明显发现的那样,命令行app*可以*有一个捆绑,所以我猜这就是为什么`NSBundle`是Foundation kit的一部分. (2认同)

Ale*_*ray 8

如果你必须,请叫我纯粹主义者 - 或者是仇恨者 - 但我"喜欢"

NSString *myLittleCLIToolPath = NSProcessInfo.processInfo.arguments[0];