linux c 根据程序名获取进程号
#include <stdio.h> #include <unistd.h> #include <string.h> #include <dirent.h> #include <stdlib.h> #include <limits.h> int main(void) { DIR *dir; struct dirent *d; int pid,i=0; char* s; dir=opendir("/proc"); while((d=readdir(dir))!=NULL) { char exe[PATH_MAX+1]; char path[PATH_MAX+1]; int len; if((pid=atoi(d->d_name))==0) { continue; } snprintf(exe,sizeof(exe),"/proc/%s/exe",d->d_name); if((len=readlink(exe,path,PATH_MAX))<0) { continue; } path[len]='\0'; s=strrchr(path,'/'); // printf("%s %s %s\n",exe,s,path); s++; //printf("%s\n",s); if(!strncmp("tiwangtest",s,strlen("tiwangtest"))) { if(s[strlen("tiwangtest")]==' '||s[strlen("tiwangtest")]=='\0') { closedir(dir); printf("%d\n",pid); } } //sleep(1); } while(1) {} return 0; }
在终端使用ps -a命令查看
无情的摸鱼机器