函数名:ReadLink()
函数功能:获取当前进程的程序名
函数实现:
1 string ReadLink(){ 2 char name[100]; 3 int rval = readlink("/proc/self/exe",name,sizeof(name)-1); 4 if(rval == -1){ 5 cout << "readlink error" << endl; 6 } 7 name[rval] = '\0'; 8 return "./"+string(strrchr(name, '/') + 1); 9 }
系统函数:
(1)readlink()函数:
函数原型:int readlink(const char *path, char *buf, size_t bufsize);
函数说明:readlink()函数会将参数path的符号连接到内容buf所指的内存空间,返回的内容不是以NULL作为字符串结尾,但会将字符串的字符数返回。若参数bufsize小于符号连接的内容长度,过长的内容会被截断。
返回值:执行成功则传符号连接所指的文件路径字符串,失败返回-1, 错误代码存于errno。
(2)strrchr()函数:
函数原型:char *strrchr(const char *str, char c);
函数说明:找一个字符c在另一个字符串str中末次出现的位置(也就是从str的右侧开始查找字符c首次出现的位置),并返回从字符串中的这个位置起,一直到字符串结束的所有字符。如果未能找到指定字符,那么函数将返回NULL。