我有这个要求,我需要从内部找到 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/