首页 >后端开发 >C++ >如何获取我的C/C程序在不同平台上的执行目录?

如何获取我的C/C程序在不同平台上的执行目录?

Susan Sarandon
Susan Sarandon原创
2024-12-24 17:49:09925浏览

How Can I Get the Execution Directory of My C/C   Program Across Different Platforms?

确定程序的目录

在 C/C 中,获取程序运行目录的完整路径对于跨平台应用程序来说可能是一个挑战。本文解决了这个问题,提供了适合不同平台和文件系统的解决方案。

与平台无关的方法

不幸的是,没有标准的 C/C 库函数可以返回程序的目录路径与平台无关的方式。但是,使用特定于操作系统的 API 可以实现此结果。

Windows

在 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

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

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