检查进程运行的问题?

rainliuyu 2007-06-21 03:32:53
我要写个C程序,在linux下运行
有个工作是检查一些特定进程是否在运行。
进程的名称我是知道的,能否通过名称知道该进程是否在运行?比如获取进程id?
...全文
205 8 打赏 收藏 转发到动态 举报
写回复
用AI写文章
8 条回复
切换为时间正序
请发表友善的回复…
发表回复
dai_weitao 2007-06-22
  • 打赏
  • 举报
回复
你要先通过名找到进程ID, 通过调用ps命令写入文件进行分些, 楼上的就可以实现. 其他的容易搞定.
rainliuyu 2007-06-22
  • 打赏
  • 举报
回复
多谢几位大哥的指点,
我用cceczjxy()的方法搞定了
后悔开帖子的时候没多加点分,再次感谢各位了啊~
NC 2007-06-21
  • 打赏
  • 举报
回复
kill(0,pid),对指定进程什么也不干。可以用来测试pid所对应的进程是否存在
cceczjxy 2007-06-21
  • 打赏
  • 举报
回复
进成没有名,只有号,有名的只是可执行程序.进程是通过进程号操作的.
不过我们可以根据程序名找到相应的进程号.

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);//对进程进行相应的操作
rainliuyu 2007-06-21
  • 打赏
  • 举报
回复
谢谢楼上,不过我有疑问
通过man和搜索,知道了kill其实是发送信号到某进程
那我想知道,kill(0,pid)中,0表示什么?而且,我是否能把进程名称作为参数?因为我还不知道进程ID
NC 2007-06-21
  • 打赏
  • 举报
回复
if( kill(0,pid) >= 0 )
then the process is alive
else is deaded.
rainliuyu 2007-06-21
  • 打赏
  • 举报
回复
大哥。。我的程序又不是只干这个。。
不过你说的shell script我不懂,C程序能调用它吗? 把进程名称当参数传进去,script返回结果给C?
顺德达人 2007-06-21
  • 打赏
  • 举报
回复
肯定可以,不用写C了,写一个简单的shell script就可以了

23,120

社区成员

发帖
与我相关
我的任务
社区描述
Linux/Unix社区 应用程序开发区
社区管理员
  • 应用程序开发区社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧