Linux上运行程序的目录?

Ame*_*aki 4 c++ unix linux

嘿,我一直在编写一个程序(一种电子书查看类型的东西),它从可执行文件所在的文件夹中的文件夹中加载文本文件.这给我带来了一些问题,因为如果我使用命令"./folder/folder/program"从另一个目录运行程序,我的程序将找不到文本,因为工作目录不正确.我不能拥有绝对目录,因为我希望程序是可移植的.有没有办法获得运行可执行文件的精确目录,即使它已从另一个目录运行.我听说可以结合使用argc [0]和getcwd()但是当目录中有空格时会截断argc(我想?)所以我想尽可能避免这种情况.

我在Linux上使用g ++,Thanx提前

pli*_*nth 8

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

详情请见此处.

在linux/proc/<pid>/exe或/ proc/self/exe上应该是可执行文件的符号链接.和其他人一样,我认为更重要的问题是"你为什么需要这个?" 使用可执行路径查找辅助文件并不是真正的UNIX表单.相反,您使用环境变量或默认位置,或遵循其他约定之一来查找辅助文件的位置(即〜/.<myapp> rc).