如何在Linux上获取当前exe文件的路径?

时间:2014-05-29 21:23:09

标签: c++ path exe

下面的代码给出了Linux上exe文件的当前路径:

#include <iostream>
std::string getExePath()
{
  char result[ PATH_MAX ];
  ssize_t count = readlink( "/proc/self/exe", result, PATH_MAX );
  return std::string( result, (count > 0) ? count : 0 );
}
int main()
{
  std::cout << getExePath() << std::endl;  
  return 0;
}

问题在于,当我运行它时,给出了exe的当前路径和exe的名称,例如:

/home/.../Test/main.exe

我想只获得

/home/.../Test/

我知道我可以解析它,但有没有更好的方法呢?

1 个答案:

答案 0 :(得分:5)

dirname是您正在寻找的功能。

#include <libgen.h>

ssize_t count = readlink("/proc/self/exe", result, PATH_MAX);
const char *path;
if (count != -1) {
    path = dirname(result);
}