嘿,我一直在写一个程序(一种类似于电子书的查看类东西),它从可执行文件所在的文件夹中的一个文件夹中加载文本文件。这给我带来了一个问题,因为例如,如果我使用“ ./folder/folder/program”命令从另一个目录运行该程序,由于工作目录不正确,我的程序将找不到文本。我没有绝对目录,因为我希望该程序具有可移植性。有什么方法可以获取可执行文件正在运行的确切目录,即使它是从其他目录运行的也是如此。我听说可以将argc [0]和getcwd()组合在一起,但是当目录中有空格时,argc被截断了(我想呢?),所以我想避免这种情况。
我预先在Linux上使用g ++,Thanx
编辑-不要使用getcwd(),它只是用户所在的位置,而不是可执行文件所在的位置。
有关详细信息,请参见此处。
在Linux上,/ proc / / exe或/ proc / self / exe应该是指向可执行文件的符号链接。与其他人一样,我认为更重要的问题是“为什么需要这个?” 使用可执行路径查找辅助文件并不是真正的UNIX形式。而是使用环境变量或默认位置,或遵循其他约定之一来查找辅助文件的位置(即〜/。 rc)。