永发信息网

linux c 检查进程是否存在

答案:2  悬赏:0  手机版
解决时间 2021-02-14 04:08
  • 提问者网友:心牵心
  • 2021-02-13 19:27
linux c 检查进程是否存在
最佳答案
  • 五星知识达人网友:低音帝王
  • 2021-02-13 20:51
基本思路是先定义一个FILE指针,用该指针接收popen()执行ps指令的返回值,再从指针中读取数据到缓存,根据得到的数据判断进程是否存在。
参考代码如下:
#include
#include
#include
#include

int main()
{
FILE *pstr;
char cmd[128],buff[512];
pid_t pID;
int pidnum;
char *name= "Test";
char *p = NULL;
int ret=3;
memset(cmd,0,sizeof(cmd));
sprintf(cmd, "ps -ef|grep %s",name);
pstr=popen(cmd, "r");
if(pstr==NULL)
{ return 1; }
memset(buff,0,sizeof(buff));
fgets(buff,512,pstr);
printf("%s\n",buff);
p=strtok(buff, " ");
p=strtok(NULL, " ");
pclose(pstr); //这句是否去掉,取决于当前系统中ps后,进程ID号是否是第一个字段
if(p==NULL)
{ return 1; }
//printf( "pid:%s\n",p);
if(strlen(p)==0)
{ return 1; }
if((pidnum=atoi(p))==0)
{ return 1; }
printf("pidnum: %d\n",pidnum);
pID=(pid_t)pidnum;
ret=kill(pID,0);
printf("ret= %d \n",ret);
if(0==ret)
printf("process: %s exist!\n",name);
else
printf("process: %s not exist!\n",name);
return 0;
}
我要举报
如以上回答内容为低俗、色情、不良、暴力、侵权、涉及违法等信息,可以点下面链接进行举报!
点此我要举报以上问答信息
大家都在看
推荐资讯