日期:2014-05-16  浏览次数:20569 次

检查进程运行的问题?
我要写个C程序,在linux下运行
有个工作是检查一些特定进程是否在运行。
进程的名称我是知道的,能否通过名称知道该进程是否在运行?比如获取进程id?

------解决方案--------------------
肯定可以,不用写C了,写一个简单的shell script就可以了
------解决方案--------------------
if( kill(0,pid) > = 0 )
then the process is alive
else is deaded.
------解决方案--------------------
进成没有名,只有号,有名的只是可执行程序.进程是通过进程号操作的.
不过我们可以根据程序名找到相应的进程号.

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 %s\n ",p);
if(strlen(p)==0)
return;
if((pidnum=atoi(p))==0)
return;

splaypid=(pid_t)pidnum;//找到进程号
kill(splaypid,SIGKILL);//对进程进行相应的操作

------解决方案--------------------
你要先通过名找到进程ID, 通过调用ps命令写入文件进行分些, 楼上的就可以实现. 其他的容易搞定.