如何判断进程是否存在,防止重复启动?谢谢!

有代码给出为好!
---------------------------------------------------------------

int detect_process(char * process_name)
{
FILE *ptr;
char buff[512];
char ps[128];

sprintf(ps,"ps -e ¦ grep -c ' %s$'",process_name);

strcpy(buff,"ABNORMAL");
if((ptr=popen(ps, "r")) != NULL)
{
while (fgets(buff, 512, ptr) != NULL)
{
if(atoi(buff)>=2)
{
pclose(ptr);
return CONFLICT;
}
}
}
if(strcmp(buff,"ABNORMAL")==0) /ps command error/
return ERROR;
pclose(ptr);
return NOERROR;
}
---------------------------------------------------------------

用ps消耗大,你可以给你想查的那个进程发一个消息,看看它能不能接到,这样做的话比较准确。
kill(process_id,用户自定义消息)看看它的return值,在进程中加入对这个消息的捕获。不要处理它就可以了
---------------------------------------------------------------

如果用msg来测试进程是否正常,
那可以直接把该进程的PID用msg返回

Published At
Categories with 服务器类
Tagged with
comments powered by Disqus