红联Linux门户
Linux帮助

请问popen怎么防止僵死进程啊?

发布时间:2011-10-31 21:30:00来源:红联作者:userful
程序功能是电脑网卡断开后自动关机。通过popen调用ethtool实现判断网卡状态。现在是程序运行几天后。系统会产生很多ethtool的进程。请问pclose关闭怎么没用呢?
#include
#include
#include
#include
#include
int checkethn(char *netcard)
{
FILE *fp;
char buf[200]={0};
if((fp = popen(netcard,"r"))!=NULL)
while(fgets(buf, 200, fp)!= NULL)
{
if (strstr(buf,"Link detected: yes")!=NULL)
{
return(1);
break;
}
}
pclose(fp);
return(0);
}

int main()
{
int errno;
printf("UPS Stop,Auto ShutDown\n");
daemon(0,0);
while(1)
{
errno=checkethn("ethtool eth0");
if(errno==0)
{
sleep(30);
errno=checkethn("ethtool eth0");
if(errno==0)
system("poweroff");//printf("poweroff\n");
}

sleep(90);
}
}
文章评论

共有 0 条评论