免费注册 查看新帖 |

Chinaunix

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

OPEN_MAX是1024,但是找不到定义在哪 [复制链接]

论坛徽章:
0
跳转到指定楼层
1 [收藏(0)] [报告]
发表于 2008-12-17 11:30 |只看该作者 |倒序浏览
在阅读apue时,程序
  1. #include <errno.h>
  2. #include<stdio.h>
  3. #include<unistd.h>
  4. #include <limits.h>

  5. #ifdef  OPEN_MAX
  6. static long openmax = OPEN_MAX;
  7. #else
  8. static long openmax = 0;
  9. #endif

  10. /*
  11. *  * If OPEN_MAX is indeterminate, we're not
  12. *   * guaranteed that this is adequate.
  13. *    */
  14. #define OPEN_MAX_GUESS 256

  15. main(void)
  16. {
  17.             if (openmax == 0) {      /* first time through */
  18.                             errno = 0;
  19.                                     if ((openmax = sysconf(_SC_OPEN_MAX)) < 0) {
  20.                                                        if (errno == 0)
  21.                                                                               openmax = OPEN_MAX_GUESS;    /* it's indeterminate */
  22.                                                                   else
  23.                                                                                          printf("sysconf error for _SC_OPEN_MAX");
  24.                                                                           }
  25.                                         }

  26.                 printf("%d",openmax);
  27. }
复制代码


结果是1024,但是并没有在limit.h和unistd.h中找到定义。

论坛徽章:
0
2 [报告]
发表于 2008-12-17 12:21 |只看该作者
这个不是头文件定义的吧???

论坛徽章:
0
3 [报告]
发表于 2008-12-17 12:29 |只看该作者
#define OPEN_MAX         256        /* # open files a process may have */

<limits.h>

论坛徽章:
0
4 [报告]
发表于 2008-12-17 13:21 |只看该作者

回复 #3 雨过白鹭洲 的帖子

linux/limits.h

论坛徽章:
0
5 [报告]
发表于 2008-12-17 13:35 |只看该作者
头文件里面定义好了

论坛徽章:
0
6 [报告]
发表于 2008-12-17 13:53 |只看该作者
原帖由 Aquester 于 2008-12-17 13:21 发表
linux/limits.h


3Q,确实是

论坛徽章:
0
7 [报告]
发表于 2008-12-17 14:51 |只看该作者
2.6.24以后的内核,OPEN_MAX不在linux/limits.h里面定义了。
参考这里
http://linux.derkeiler.com/Maili ... 07-03/msg05461.html

论坛徽章:
0
8 [报告]
发表于 2008-12-17 15:20 |只看该作者
现在OPEN_MAX已经取消,而是资源限制RLIMIT_NOFILE的一部分

进程可以动态获得和修改资源限制值

资源限制分为软限制和硬限制,Linux默认均为1024,具体请参考相关资料

论坛徽章:
0
9 [报告]
发表于 2008-12-17 15:38 |只看该作者
在我的系统中,确实没有这个常量的定义

论坛徽章:
0
10 [报告]
发表于 2008-12-17 15:38 |只看该作者
  1. $ gcc --version
  2. gcc (GCC) 4.3.2 20081105 (Red Hat 4.3.2-7)
  3. Copyright (C) 2008 Free Software Foundation, Inc.
  4. This is free software; see the source for copying conditions.  There is NO
  5. warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.

复制代码
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

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

清除 Cookies - ChinaUnix - Archiver - WAP - TOP