Linux下获取当前程序的绝对路径

Posted Ayato

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Linux下获取当前程序的绝对路径相关的知识,希望对你有一定的参考价值。

在Linux开发应用时,我们常常需要在程序中获取当前程序绝对路径,我们可以通过readlink读取符号链接/proc/self/exe进行获取,这个符号链接代表当前程序,它的源路径就是当前程序的绝对路径,比如我们在终端下键入命令:

[yangye@localhost ~]$ ls -ld /proc/self/exe
lrwxrwxrwx 1 yangye yangye 0 2月  18 16:05 /proc/self/exe -> /usr/bin/ls

可以看到/proc/self/exe指向ls命令的绝对路径。

ok,清楚原理后接下就是完整代码:

#include <string>
#include <limits.h>
#include <sys/types.h>

string GTFEngineHost::getExePath()
{
  char result[PATH_MAX];
  ssize_t count = readlink( "/proc/self/exe", result, PATH_MAX );
  string exePath = string( result, (count > 0) ? count : 0 );
  size_t pos = exePath.find_last_of("\/");
  return (string::npos == pos)
           ? ""
           : exePath.substr(0, pos);
}

上面代码中最终返回的是程序所在目录,如果需要程序绝对路径时直接返回exePath即可不用再做字符串分割。

以上是关于Linux下获取当前程序的绝对路径的主要内容,如果未能解决你的问题,请参考以下文章

PHP获取文件绝对路径的代码(上一级目录)

Linux下获取可执行程序的绝对路径

linux shell 获取文件夹全文绝对路径

java File linux windows 下 绝对路径 相对路径问题

linux c 查看当前目录下是不是有指定文件

Class类getResource方法获取文件路径