如何确定 C 中的可执行位置
在 C/C 中,获取当前正在执行的程序的完整路径可能具有挑战性。具体来说,使用 argv[0] 可能无法提供完整路径。
没有 /proc 的 Unix 系统
如果您的 Unix 系统缺少 /proc 文件系统,请考虑以下策略:
- 检查 argv[0] 是否以斜杠 (/) 开头:这表示绝对值路径。
- 如果 argv[0] 包含斜杠 (/):将其附加到当前工作目录 (cwd)。
- 否则,在指定的目录中搜索可执行文件 argv[0] $PATH 环境变量。
Unix 系统/proc
对于具有 /proc 的 Unix 系统,您可以使用以下方法之一:
- Linux: readlink("/proc/self/exe", buf , bufsize)
- FreeBSD: readlink("/proc/curproc/file", buf, bufsize)
- Solaris: readlink("/proc/self/path/a.out", buf, bufsize)
Windows 系统
在 Windows 上,使用 GetModuleFileName函数:
GetModuleFileName(NULL, buf, bufsize);
登录后复制
其他注意事项
- 验证可执行文件不是符号链接,并在必要时解析它。
- 调用进程应正确设置 argv[0] 以使此信息准确。
以上是如何获取 C/C 可执行文件的完整路径?的详细内容。更多信息请关注PHP中文网其他相关文章!