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

如何在在一个程序中判断另一个程序是否已运行?是哪个命令或函数?
如何在在一个程序中判断另一个程序是否已运行?是哪个命令或函数?

------解决方案--------------------
可以用调用ps来得到,这是一个土办法,可以试试。

FILE *fp;
int count=0;
fp = popen("ps -ef|grep foo1|grep -v grep|wc -l|awk '{print $1}'","r");
if(fp)
{
count = fscanf("%d",&count);
fclose(fp);
}

if(count > 0)
printf("foo1 running...\n");
else
printf("foo1 not running...\n");


------解决方案--------------------
int rs;
rs = system("killall -0 http");
if(rs == 0){
//http is running...
}
------解决方案--------------------
一个进程判断另外一个进程是否存在,就是看系统中是否存在该进程。一般就是system调用ps -ef查看是否存在该进程,frankxue的办法已经不土了,不使用system调用而使用popen。不过他应该使用pclose而不是fclose关闭。

应该注意在system或popen之前,应当保证SIGCHLD的处理应该是SIG_DFL,也就是默认处理。如果SIG_IGN可能导致system调用返回255,popen失败,如果使用其他钩子,可能导致调用进程在接收到SIGCHLD并进行处理发生其他问题(看钩子程序里面做了什么,只是有这种可能性)