之前有博文:
LINUX中用C获得当前执行应用的所在路径_linux c语言 直接使用.\获取的路径是程序所在路径 还是命令执行路径-CSDN博客
这个代码也没问题。现实中有时取的路径并不对。比如说,我是../work/test,这个路径就不对了。简单的说:
- getcwd()得到是当前所在路径。/home/weiyu/ctrler
- argv[0]是当前执行命令。../recorder/recorder
要得到正确路径,必须进行合并。参考代码如下:
const char* initExeDir(const char* pExe) {if (pExe[0] == '/') {sprintf(g_caExePath, "%s", pExe);}else {char path[256] = {0};getcwd(path, 256);sprintf(g_caExePath, "%s/%s", path, pExe);}//去掉执行应用部分strrchr(g_caExePath, '/')[0] = 0;return g_caExePath;
}