IT圈泥瓦匠一枚,混迹过国产处理器圈,从事Linux BSP开发混一软件经理职务,现漂浮在云端从事OpenStack-Nova相关设计工作。
分类: LINUX
2014-06-11 18:13:54
方法一、用realpath函数。这种方法用于开机启动程序获取自身目录会出错char current_absolute_path[MAX_SIZE];//获取当前目录绝对路径if (NULL == realpath("./", current_absolute_path)){printf("***Error***\n");exit(-1);}strcat(current_absolute_path, "/");printf("current absolute path:%s\n", current_absolute_path);方法二、用getcwd函数。这种方法用于开机启动程序获取自身目录会出错char current_absolute_path[MAX_SIZE];//获取当前目录绝对路径if (NULL == getcwd(current_absolute_path, MAX_SIZE)){printf("***Error***\n");exit(-1);}printf("current absolute path:%s\n", current_absolute_path);
方法三、用readlink函数。这种方法最可靠,可用于开机启动程序获取自身目录char current_absolute_path[MAX_SIZE];//获取当前程序绝对路径int cnt = readlink("/proc/self/exe", current_absolute_path, MAX_SIZE);if (cnt < 0 || cnt >= MAX_SIZE){printf("***Error***\n");exit(-1);}//获取当前目录绝对路径,即去掉程序名int i;for (i = cnt; i >=0; --i){if (current_absolute_path[i] == '/'){current_absolute_path[i+1] = '\0';break;}}printf("current absolute path:%s\n", current_absolute_path);