永发信息网

linux c 检查进程是否存在

答案:2  悬赏:0  手机版
解决时间 2021-02-14 04:08
linux c 检查进程是否存在
最佳答案
基本思路是先定义一个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;
}
我要举报
如以上问答信息为低俗、色情、不良、暴力、侵权、涉及违法等信息,可以点下面链接进行举报!
大家都在看
燕郊易世达易世达驾校怎么去啊,我要去那办事
第六小题,帮我哦,谢谢,给好评,速度哦
湘菜快餐我想知道这个在什么地方
三河远东驾校报名处地址好找么,我有些事要过
教育基金理财型属于哪种保险
销售经理大还是部门经理大?哪个级别高?收入
下图所反映的经济现象包括①资本家逐渐丧失对
欢乐谷旋转小火锅怎么去啊,有知道地址的么
在化学里,H2代表氢元素吗?
向阳机动车驾校地址有知道的么?有点事想过去
遇见爱情的利先生陈晓和周冬雨吻戏过了吗
粤语琼吞是什么意思?
朗驰驾校地址在什么地方,想过去办事
如何证明一种气体是否有二氧化碳
华源机电设备有限公司在哪里啊,我有事要去这
推荐资讯
索纳塔八代起动机是什么型号
鑫盛源大酒店我想知道这个在什么地方
低碳技术的类型分为()
手机清理后微信图片无法加载
某生态系统中四种生物的数量关系如下图所示。
广东农历七月十四称为"鬼节",是怎样来的
吃优莎娜营养餐有用吗?能减肥吗?
当对受访者的身份,观点不明确时,记者应该怎
坐火车的话从铜陵到阜阳要多长时间?火车一天
下列有关四个遗传系谱图的叙述正确的是CA. 可
中国建设银行24小时自助银行(丰安大路支行)地
中国(上海)自贸区对外资管理将实现由“正面
正方形一边上任一点到这个正方形两条对角线的
阴历怎么看 ?