c++ - 如何从内部找到 C++ Linux 程序的完整路径?

标签 c++ linux

我有这个要求,我需要从内部找到 C++ 程序的完整路径。对于 Windows,我有以下解决方案。 argv[0] 可能包含也可能不包含完整路径。但我需要确定。

TCHAR drive[_MAX_DRIVE], dir[_MAX_DIR], base[_MAX_FNAME], ext[_MAX_EXT];
TCHAR fullPath[255+1];
_splitpath(argv[0],drive,dir,base,ext);
SearchPath(NULL,base,ext,255,fullPath,NULL);

上述代码的 Linux (gcc) 等效项是什么?希望看到可移植的代码。

最佳答案

在 Linux(Posix?)上,您有一个符号链接(symbolic link) /proc/self/exe,它链接到可执行文件的完整路径。

在 Windows 上,使用 GetModuleFileName .

永远不要依赖 argv[0],它不能保证有用。

请注意,路径和文件系统不是语言的一部分,因此必然是依赖于平台的功能。

关于c++ - 如何从内部找到 C++ Linux 程序的完整路径?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7051844/

相关文章:

c++ - 为什么 vector<bool> 不是 STL 容器?

c++ - Win32 属性页中的图标很难看 - 4 位图标

Linux驱动设置取消点

linux - 对 awk 中数组的非法引用(我无法弄清楚 awk)

c - 从 linux 内核模块读取或写入时获取未知符号 ***_******(err 0)

c++ - 我可以有一个跨平台跨技术的解决方案吗?

c++ - Q_IMPORT_PLUGIN,我可以使用多少次?

regex - 使用 find 来识别与父目录名称相同的文件名

linux - rsync 守护进程行为异常

c++ - 使用CMake在特定于应用程序的子文件夹中查找依赖项