首页 >后端开发 >C++ >如何跨平台获取程序在C/C中的目录?

如何跨平台获取程序在C/C中的目录?

Patricia Arquette
Patricia Arquette原创
2024-12-22 17:03:10769浏览

How Can I Get a Program's Directory in C/C   Across Different Platforms?

跨平台跨文件系统的C/C获取程序目录

很多场景下,需要确定程序所在的目录一个程序正在运行。此信息对于各种目的都很有价值,例如访问配置文件或日志记录。然而,以与平台无关和文件系统无关的方式获取此目录可能会带来挑战。

标准方法

不幸的是,标准 C/C 库确实不为此目的提供标准函数。对于特定于平台的解决方案,情况如下:

Windows

在 Windows 系统上,可以使用 GetModuleFileName 函数检索执行应用程序的完整路径.

char pBuf[256];
size_t len = sizeof(pBuf);
int bytes = GetModuleFileName(NULL, pBuf, len);
return bytes ? bytes : -1;

Linux

对于Linux系统中,可以利用readlink函数来读取指向正在执行的程序的符号链接

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;

以上是如何跨平台获取程序在C/C中的目录?的详细内容。更多信息请关注PHP中文网其他相关文章!

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