我试图制作一个在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()
,某种程度上提到了程序的绝对路径,我不应该事先知道。
有人能帮我找到长期解决方案吗?
答案 0 :(得分:1)
argv
的第一个元素包含程序路径的相对位置。