在 C 中查找可执行文件的完整路径
在 C 和 C 中,确定当前正在执行的程序的完整路径可能具有挑战性。这是因为包含程序名称的 argv[0] 通常不提供完整路径。
基于 Unix 的系统
可靠地检索可执行文件的位置在带有“/proc”的 Unix 系统上:
- 使用readlink("/proc/self/exe", buf, bufsize) (Linux)
- 使用 readlink("/proc/curproc/file", buf, bufsize) (FreeBSD)
- 使用readlink("/proc/self/path/a.out", buf, bufsize) (Solaris)
在没有“/proc”的 Unix 系统上:
- 如果argv[0]以“/”开头,则为绝对路径。
- 如果argv[0] 包含“/”,将其附加到当前工作目录。
- 在 $PATH 指定的目录中搜索 argv[0] 作为可执行文件。
Windows
在 Windows 系统上,使用以下命令code:
GetModuleFileName(NULL, buf, bufsize);
其他注意事项
- 检查可执行文件是否是符号链接并相应地解析它(如果使用“/proc”方法则不需要在 Linux 上)。
- 请注意,正确设置 argv[0] 是调用进程的责任,尤其是在不受信任的情况(例如 setuid 可执行文件)。
以上是如何获取 C/C 中可执行文件的完整路径?的详细内容。更多信息请关注PHP中文网其他相关文章!