如何获取 c++ 自己的目录?

Posted

技术标签:

【中文标题】如何获取 c++ 自己的目录?【英文标题】:How to get c++ own directory? 【发布时间】:2015-05-27 07:32:25 【问题描述】:

我有一个 c++ .so 文件,所以我从 python 调用它。我想从 C++ 代码中获取 .so 文件自己的位置。我使用了 getcwd 和 readlink。他们返回了 python 代码运行目录。有人知道这个问题吗?请帮助我,谢谢。

P.s 我的 .so 文件位置是:/home/user/cpp/test.so 我的 python 代码位置是:/home/user/python/test.py getcwd,readlink 的输出是:/home/user/python(我想得到“/home/user/cpp”)

【问题讨论】:

无法保证获取存储共享库的目录 - 最接近的方法是扫描 LD_LIBRARY_PATH 以获取名称,但请注意,如果您有多个体系结构,第一个您找到的可能不是您正在寻找的那个(例如 x86 而不是 x86-64,反之亦然)。为什么你认为你需要知道这一点? 还有一个真正的风险是你得到一个指向 .so 文件的符号链接,而不是一个硬链接。这可以接受吗? 【参考方案1】:

通常,查找可执行文件的共享库依赖项及其路径的最简单/最有效的方法是使用"ldd" 命令。

如果您想以编程方式获取此信息,一种可能是dl_iterate_phdr

另一个是检查/proc/--pid--/maps:

http://www.unix.com/programming/34498-how-view-loaded-shared-libraries-running-processes-linux.html

【讨论】:

以上是关于如何获取 c++ 自己的目录?的主要内容,如果未能解决你的问题,请参考以下文章

如何在 Visual Studio Express 2013(C++) 中获取特定驱动器的当前目录?

如何在没有监控线程或进程的情况下使用 C++ 快速获取目录是不是已更改?

如何获取目录C ++的磁盘大小

C++ 字符串 - 如何避免获取无效指针?

如何在 C++ 中获取 linux 命令输出字符串和输出状态

如何使用 C++ 在 Linux 中获取总 CPU 使用率