一尘不染

Linux上正在运行的程序的目录?

linux

嘿,我一直在写一个程序(一种类似于电子书的查看类东西),它从可执行文件所在的文件夹中的一个文件夹中加载文本文件。这给我带来了一个问题,因为例如,如果我使用“
./folder/folder/program”命令从另一个目录运行该程序,由于工作目录不正确,我的程序将找不到文本。我没有绝对目录,因为我希望该程序具有可移植性。有什么方法可以获取可执行文件正在运行的确切目录,即使它是从其他目录运行的也是如此。我听说可以将argc
[0]和getcwd()组合在一起,但是当目录中有空格时,argc被截断了(我想呢?),所以我想避免这种情况。

我预先在Linux上使用g ++,Thanx


阅读 413

收藏
2020-06-03

共1个答案

一尘不染

编辑-不要使用getcwd(),它只是用户所在的位置,而不是可执行文件所在的位置。

有关详细信息,请参见此处

在Linux上,/ proc / / exe或/ proc / self /
exe应该是指向可执行文件的符号链接。与其他人一样,我认为更重要的问题是“为什么需要这个?”
使用可执行路径查找辅助文件并不是真正的UNIX形式。而是使用环境变量或默认位置,或遵循其他约定之一来查找辅助文件的位置(即〜/。 rc)。

2020-06-03