跨平台跨文件系统的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中文网其他相关文章!