首页 >后端开发 >C++ >如何获取 C/C 中可执行文件的完整路径?

如何获取 C/C 中可执行文件的完整路径?

Susan Sarandon
Susan Sarandon原创
2024-12-14 19:21:12400浏览

How Can I Get the Full Path of My Executable in C/C  ?

在 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中文网其他相关文章!

声明:
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn