linux c怎样检查另一个程序是否在运行。没运行就运行他。

ljwtarena 2011-12-12 08:13:12
在linux下,我想通过一个linux c程序定时检查另一个程序是否在运行,如果在运行就不运行了,如果没运行,就运行他。谢谢了。。。。。。。
...全文
895 14 打赏 收藏 转发到动态 举报
写回复
用AI写文章
14 条回复
切换为时间正序
请发表友善的回复…
发表回复
树先生 2011-12-16
  • 打赏
  • 举报
回复
写个shell脚本检测不行吗
ljwtarena 2011-12-16
  • 打赏
  • 举报
回复
谢谢大家。。proc文件系统 下貌似看不到在运行的程序名,pid还是有。
「已注销」 2011-12-16
  • 打赏
  • 举报
回复
假如已知程序名:
根据程序名称在/proc文件系统查找,如果查找到了说明还在运行
在proc下还可以取pid
QQ286540610 2011-12-16
  • 打赏
  • 举报
回复



#include <stdio.h>
#include <string.h>
/*get the pid array*/
static int *get_pid(char *key)
{
char buff[80];
int *pid = NULL;
int i = 0;
char *ret;
pid = (int *)malloc(8*sizeof(int));
if (NULL == pid)
{
printf("pid malloc error!\n");
}

memset(pid,0,8*sizeof(int));
sprintf(buff,"pidof %s",key);
FILE *pidreader = popen(buff,"r");
memset(buff,0,80);

ret = fgets(buff,79,pidred);
pclose(pidreader);

ret = strtok(buff," ");
while (ret != NULL)
{
pid[i++]=atoi(ret);
ret =strtok(NULL," ");
}
return pid;

}



/*this function is usesd to signal the process with "kill -10" */
void stop_process()
{

int *pid=get_pid("your_process_name");
int i = 0;
while (pid[i] )
{
//printf("signal to pid=%d\n",pid[i]);
kill(pid[i++],10);
}
free(pid);


}


这是我以前写的一个类似的函数。应该对你有用。











ljwtarena 2011-12-14
  • 打赏
  • 举报
回复
谢谢你们的回复,可是2个没有任何关系的进程,既不是父子进程,也不是兄弟进程,有什么好的方法得到他的pid呢?
ljwtarena 2011-12-13
  • 打赏
  • 举报
回复
谢谢你的回复。。太简单了啊。能详细点吗?先干什么后干什么啊?
Chenbairen1226 2011-12-13
  • 打赏
  • 举报
回复
楼上的意见都ok
blackbeer001 2011-12-13
  • 打赏
  • 举报
回复
最好不用system("ps -ef|grep 程序名")方式,这样类似程序名*的情况也会返回,建议用kill -0方式
jialejiahi 2011-12-13
  • 打赏
  • 举报
回复
[Quote=引用 5 楼 ljwtarena 的回复:]

谢谢你的回复。。太简单了啊。能详细点吗?先干什么后干什么啊?
[/Quote]
4楼意思是用popen函数,把ps命令的输出重定向到管道,然后根据输出结果确定程序是否运行。
自己man 一下popen函数。
昵称很不好取 2011-12-12
  • 打赏
  • 举报
回复
popen
ljwtarena 2011-12-12
  • 打赏
  • 举报
回复
谢谢你的回复。。。这我知道啊。system("ps -ef|grep 程序名"),我想知道大概或者具体怎么做。
昵称很不好取 2011-12-12
  • 打赏
  • 举报
回复
运行ps命令查找,要是知道pid可以使用kill -0 pid来看该pid进程是否还在运行
Arnold9009 2011-12-12
  • 打赏
  • 举报
回复
调用ps指令查看系统运行的进程,然后查找有没有这个进程

23,121

社区成员

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

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