发布日期:2018-03-26
我怎样获取一个当前程序的运行目录?+ 查看更多
我怎样获取一个当前程序的运行目录?
+ 查看更多
发布日期:2018-02-26 14:29
分类:CPlusPlus
浏览次数:139
有没有一个与平台和文件系统无关的方法来获取一个正在运行的C或C++程序的目录的完整路径?不要与当前的工作目录混淆。
(请不要建议库函数,除非它们是像C语言库或者标准模板库一样标准。)
(如果没有平台或文件系统无关的方法,在Windows和Linux下为特定的文件系统工作的建议也同样欢迎。)
回答
这是获取正在执行的应用程序的完整路径的代码:
Windows:int bytes = GetModuleFileName(NULL, pBuf, len); if(bytes == 0) return -1; else return bytes;
Linux:
char szTmp[32]; sprintf(szTmp, "/proc/%d/exe", getpid()); int bytes = MIN(readlink(szTmp, pBuf, len), len - 1); if(bytes >= 0) pBuf[bytes] = '\0'; return bytes;