下面的代码给出了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/
我知道我可以解析它,但有没有更好的方法呢?
答案 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);
}