免费注册 查看新帖 |

Chinaunix

  平台 论坛 博客 文库
最近访问板块 发新帖
查看: 3204 | 回复: 1
打印 上一主题 下一主题

[C] popen报错问题 [复制链接]

论坛徽章:
0
跳转到指定楼层
1 [收藏(0)] [报告]
发表于 2013-09-29 15:24 |只看该作者 |倒序浏览
请教大家一个问题,看看大家有没有遇到过
就是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:进程刚启动的时候不会,只有运行了一段时间才会

论坛徽章:
1
丑牛
日期:2013-09-29 19:04:50
2 [报告]
发表于 2013-09-29 19:12 |只看该作者
管道满了吧
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

北京盛拓优讯信息技术有限公司. 版权所有 京ICP备16024965号-6 北京市公安局海淀分局网监中心备案编号:11010802020122 niuxiaotong@pcpop.com 17352615567
未成年举报专区
中国互联网协会会员  联系我们:huangweiwei@itpub.net
感谢所有关心和支持过ChinaUnix的朋友们 转载本站内容请注明原作者名及出处

清除 Cookies - ChinaUnix - Archiver - WAP - TOP