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

use*_*221 2 c++ exe path

下面的代码给出了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;
}
Run Code Online (Sandbox Code Playgroud)

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

/home/.../Test/main.exe
Run Code Online (Sandbox Code Playgroud)

我想只得到

/home/.../Test/
Run Code Online (Sandbox Code Playgroud)

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

Ant*_*ala 6

dirname是您正在寻找的功能.

#include <libgen.h>

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