在 C/C 中,获取程序运行目录的完整路径对于跨平台应用程序来说可能是一个挑战。本文解决了这个问题,提供了适合不同平台和文件系统的解决方案。
不幸的是,没有标准的 C/C 库函数可以返回程序的目录路径与平台无关的方式。但是,使用特定于操作系统的 API 可以实现此结果。
在 Windows 上,GetModuleFileName 函数可以检索模块(可执行文件)的完整路径。
char pBuf[256]; size_t len = sizeof(pBuf); int bytes = GetModuleFileName(NULL, pBuf, len); if (bytes) { return bytes; } else { return -1; // Error }
对于Linux系统,readlink函数可以访问“/proc/self/exe”来确定程序的可执行文件路径。
char pBuf[256]; size_t len = sizeof(pBuf); int bytes = MIN(readlink("/proc/self/exe", pBuf, len), len - 1); if (bytes >= 0) { pBuf[bytes] = ''; return bytes; } else { return -1; // Error }
请注意,这些方法特定于某些平台和文件系统。如果您需要更全面的解决方案,请考虑使用跨平台库,例如 Boost.filesystem 或 Qt。
以上是如何获取我的C/C程序在不同平台上的执行目录?的详细内容。更多信息请关注PHP中文网其他相关文章!