Chinaunix

标题: popen报错问题 [打印本页]

作者: linbe_ice    时间: 2013-09-29 15:24
标题: popen报错问题
请教大家一个问题,看看大家有没有遇到过
就是HP UNIX上popen的时候,报了错,打印出errno是 error: 11,Resource temporarily unavailable
然后安装使用命令tusc去跟踪查看系统调用的情况,实在popen内部调用fork时报了ERR#11 EAGAIN的错误,
上网查了以后,说是系统进程最大个数和用户进程最大个数超出,会报这个错误,但是使用命令去查了以后:
crmdb2#[/home] ps -ef | wc -l
564
crmdb2#[/home] sysdef|grep nproc
nproc                     30000          -         10-                   -
crmdb2#[/home]
crmdb2#[/home]
crmdb2#[/home] sysdef |grep maxuprc
maxuprc                   27001          -          3-                   -

都没有超出,所以实在找不出是怎么回事了

源码如下:
char * pUserName = getenv("LOGNAME");
        char sCheckShell[256]={0};
sprintf(sCheckShell," ps -fu %s|grep %s |grep -iv 'grep'| "
                " awk '{print $1,$2}' |grep  `whoami` |awk '{print $2}' ",pUserName,cstrAppName);
        FILE* fd = popen(sCheckShell,"r");
        if(fd==0)
                return true;
        if(feof(fd)==EOF)
                return true;
        char sPid[LINEMAXCHARS]={0};
        
        while ( fgets( sPid, LINEMAXCHARS, fd ) )
        {
                if(!CheckProcessIsStop(atoi(sPid)))
                {
                        pclose(fd);
                        return false;
                }
                memset(sPid,0,sizeof(sPid));
        }
        pclose(fd);

PS:进程刚启动的时候不会,只有运行了一段时间才会
作者: solu    时间: 2013-09-29 19:12
管道满了吧




欢迎光临 Chinaunix (http://bbs.chinaunix.net/) Powered by Discuz! X3.2