当前位置: 技术问答>linux和unix
检查进程运行的问题?
来源: 互联网 发布时间:2016-01-29
本文导语: 我要写个C程序,在linux下运行 有个工作是检查一些特定进程是否在运行。 进程的名称我是知道的,能否通过名称知道该进程是否在运行?比如获取进程id? | 进成没有名,只有号,有名的只是可...
我要写个C程序,在linux下运行
有个工作是检查一些特定进程是否在运行。
进程的名称我是知道的,能否通过名称知道该进程是否在运行?比如获取进程id?
有个工作是检查一些特定进程是否在运行。
进程的名称我是知道的,能否通过名称知道该进程是否在运行?比如获取进程id?
|
进成没有名,只有号,有名的只是可执行程序.进程是通过进程号操作的.
不过我们可以根据程序名找到相应的进程号.
FILE *stream;
char command[128],buff[512],*p;
pid_t splaypid;
int pidnum;
char *name="adf"
memset(command,0,sizeof(command));
sprintf(command,"ps |grep %s",name);
stream=popen(command,"r");
if(stream==NULL)return;
memset(buff,0,sizeof(buff));
fgets(buff,512,stream);
p=strtok(buff," ");
pclose(stream);
if(p==NULL)return ;
//printf("pid %sn",p);
if(strlen(p)==0)
return;
if((pidnum=atoi(p))==0)
return;
splaypid=(pid_t)pidnum;//找到进程号
kill(splaypid,SIGKILL);//对进程进行相应的操作
不过我们可以根据程序名找到相应的进程号.
FILE *stream;
char command[128],buff[512],*p;
pid_t splaypid;
int pidnum;
char *name="adf"
memset(command,0,sizeof(command));
sprintf(command,"ps |grep %s",name);
stream=popen(command,"r");
if(stream==NULL)return;
memset(buff,0,sizeof(buff));
fgets(buff,512,stream);
p=strtok(buff," ");
pclose(stream);
if(p==NULL)return ;
//printf("pid %sn",p);
if(strlen(p)==0)
return;
if((pidnum=atoi(p))==0)
return;
splaypid=(pid_t)pidnum;//找到进程号
kill(splaypid,SIGKILL);//对进程进行相应的操作
|
if( kill(0,pid) >= 0 )
then the process is alive
else is deaded.
then the process is alive
else is deaded.
|
你要先通过名找到进程ID, 通过调用ps命令写入文件进行分些, 楼上的就可以实现. 其他的容易搞定.
|
肯定可以,不用写C了,写一个简单的shell script就可以了