如何获得可可程序运行的路径?

时间:2012-01-24 14:14:40

标签: objective-c cocoa shell

在main函数体中,我需要调用system(RELATIVE_PATH + /MyShellScript.sh)。脚本和其他相关内容驻留在主项目包中。如何获得相对路径?恕我直言应该可以从主参数中提取它 - “char * argv []”......

2 个答案:

答案 0 :(得分:4)

你到底想要做什么?你的shell脚本在做什么,为什么要从main()调用它?您通常不需要修改Cocoa应用程序中的main()函数。

通常,除非绝对必要,否则应避免使用shell脚本,但如果必须,则应创建NSTask对象并使用它来执行脚本。如果要在启动时运行它,则应将代码放在应用程序委托的applicationDidFinishLaunching:方法中启动脚本。

您可以使用NSBundle的各种方法获取应用包内的资源路径:

NSString* path = [[NSBundle mainBundle] pathForResource:@"MyShellScript" ofType:@"sh"];

答案 1 :(得分:0)

int main (int argc, const char * argv[])
{
    NSLog(@"%s", argv[0]);
    return 0;
}

<强>输出

2012-01-24 21:33:22.015 CLIXMPLParser[13042:707] /Users/zrxq/Library/Developer/Xcode/DerivedData/CLIXMPLParser-dsibnvwgoqvjnvbhlxkyzcojqnwr/Build/Products/Debug/CLIXMPLParser