1. 程式人生 > >Linux下獲得程序id和程序名字

Linux下獲得程序id和程序名字

1. 通過程序名字得到程序id。

pid_t getProcessPidbyName(char *name) {     FILE *fptr;     char *buf = new char[255];     char cmd[255] = {'\0'};     pid_t pid = -1;     sprintf(cmd,"pidof %s",name);     if((fptr = popen(cmd,"r")) != NULL)     {         if(fgets(buf,255,fptr) != NULL)         {             pid = atoi(buf);             printf("pid = %d\n",pid);         }     }

    pclose(fptr);     delete buf;     return pid; }

這裡的傳入引數name是程序的名字,不是它的絕對路徑名。 2. 通過程序id得到程序的檔案路勁名字,程序存在的絕對路徑名。

bool getPathNamebyPid(pid_t pid,char *name) {     FILE *fptr;     bool bret = false;     char cmd[255] = {'\0'};     sprintf(cmd,"readlink /proc/%d/exe",pid);     if((fptr = popen(cmd,"r")) != NULL)     {         if(fgets(name,255,fptr) != NULL)         {             printf("the path name is %s.\n",name);             bret = true;         }

    }

    pclose(fptr);

    return bret;

}

這裡得到的是程序的絕對路徑名,傳入的引數,需要在外部為其開闢空間。用完需要釋放。

3. 通過檔案的絕對路徑名自然就很容易得到程序的名字。

bool getProcessNamebyPathName(const char* pathName,char* name) {     memset(name,'\0',255);     const char* pos = strrchr(pathName,'/');     if(pos == 0)     {         strcpy(name,pathName);     }     else     {         strcpy(name,pos+1);     }     return true; }