如何获取 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++ 快速获取目录是不是已更改?