【问题标题】:How to get path to current exe file on Linux? [duplicate]如何在 Linux 上获取当前 exe 文件的路径? [复制]
【发布时间】:2014-07-19 13:02:07
【问题描述】:

下面的代码给出了 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/

我知道我可以解析它,但是有没有更好的方法来做到这一点?

【问题讨论】:

  • 你的标题有点误导。问题实际上是关于获取给定文件名的目录。该文件恰好是您的可执行文件这一事实并不重要。

标签: c++ path exe


【解决方案1】:

dirname 是您要查找的函数。

#include <libgen.h>         // dirname
#include <unistd.h>         // readlink
#include <linux/limits.h>   // PATH_MAX

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

【讨论】:

  • @gregpaton08 谢谢:D
  • 结果数组应该被初始化 "char result[PATH_MAX] = {}" 因为 readlink 没有添加空终止符,因此在某些情况下没有初始化这个解决方案提供了错误的路径。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2017-02-20
  • 2021-07-21
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多