在C中传递OSX上的相对路径

时间:2016-01-22 06:25:23

标签: c macos path

我试图制作一个在Mac上的文件夹中运行可执行文件的程序。 考虑到我的程序编译在与源(/Users/Marcello/Documents/C/Test/Test/Test.c)相同的文件夹中,程序看起来像这样:

int main(int argc, const char * argv[]) 
{

    printf("Hello, world!\n");

    if(execl("/Users/Marcello/Documents/C/Test/Test/HelloWorld", "HelloWorld", NULL))
        printf("ERROR\n");

    return 0;
}

如果我给出绝对路径,一切正常,但当我尝试将相对路径传递给文件夹时,它不再工作(传递"HelloWorld"而不是"/Users/Marcello/Documents/C/Test/Test/HelloWorld")。< / p>

我注意到这种情况发生的原因是,如果没有其他指示,程序将尝试在shell的文件夹而不是项目的文件夹中搜索HelloWorld。这也发生在诸如fopen()之类的功能上,所以我尝试了解决方案;问题是,我想把这个代码放到一个程序中,每个人都可以在任何地方下载和安装,我希望它也是跨平台的,但我找到的所有解决方案,例如chdir(),某种程度上提到了程序的绝对路径,我不应该事先知道。

有人能帮我找到长期解决方案吗?

1 个答案:

答案 0 :(得分:1)

argv的第一个元素包含程序路径的相对位置。