前言

  在POSIX标准中,定义了许多限制。这些限制大约分为五类,不同类型的限制获取的方式不一样。

限制值分类

  1. 不变的最小值

  这类型的限制值是静态的,固定的。

  2. 不变值

  同上

  3. 运行时可以增加的值

  这类型的限制值在程序运行时会发生动态的变化。

  4. 运行时不变的值( 可能不确定 )

  这类型的限制值在程序运行时不变,但它不是完全静态的,和内存空间等环境有关。

  PS:所谓可能不确定是指这样的值可能是没有上限的

  5. 路径名可变值( 可能不确定 )

  这类型的限制值随着路径的变化而变化。

1,2类型限制值获取

  对于1,2类型的限制值,我们可以直接到头文件中获取到:

 #include <stdio.h>
#include <stdlib.h> // 1,2类型的限制值包含于下头文件中
#include <limits.h> int main(int argc, char **argv)
{
printf("%s : %d\n", "每个进程的最大文件数", _POSIX_OPEN_MAX); return ;
}   

运行测试

3,4类型限制值获取

  对于第3,4种类型的限制值,我们需要调用函数 sysconf 来获取:

 #include <stdio.h>
#include <stdlib.h> // 用于限制值获取的三个函数包含在下头文件中
#include <unistd.h> int main(int argc, char **argv)
{
long p; p = sysconf(_SC_CHILD_MAX);
printf("%s : %ld\n", "每个实际用户ID的最大进程数", p); return ;
}

运行测试

5类型限制值的获取

  对于第5种类型的限制值,我们需要调用函数 pathconf 或者 fpathconf 来获取:

 #include <stdio.h>
#include <stdlib.h> // 用于限制值获取的三个函数包含在下头文件中
#include <unistd.h> int main(int argc, char **argv)
{
long p; p = pathconf("/home/fangmeng/1", _PC_NAME_MAX);
printf("%s : %ld\n", "文件连接数的最大值", p); return ;
}

运行测试

说明

  1. 限制值的这几种分类有些混乱。有些限制值在一个给定的实现上是固定的( 可以在头文件中找到 ),但在另一个给定的实现上可能是变化的( 需要调用函数获取 )。

  2. 在实际开发中,对于“ 不确定 ”的限制值类型,我们要做特别的处理。请参考我的下一篇文章 - “ 不确定 "限制值的使用。

最新文章

  1. CSS DIV自动适应高度
  2. C++笔记(3):一些C++的基础知识点
  3. SolrCloud环境配置
  4. css标签选择器的优先级
  5. oracle ORA-01747(系统保留关键字)user.table.column, table.column 或列说明无效 hibernate映射oracle保留关键字
  6. PHP — php精粹-编写高效的php代码 --- API
  7. Entity Framework 学习初级篇2--ObjectContext类的介绍
  8. JS获取屏幕各种高
  9. 【转】android service 之二(IntentService)
  10. 在 .pro里加入 QMAKE_CXXFLAGS += /MP 将并行编译,加快编译速度(姚冬的办法)
  11. Sql还原数据库出现3154错误
  12. JS数组+JS循环题
  13. [2015-11-10]iis远程发布配置
  14. SQLServer2008数据库安装图解
  15. SSH鞋贸商城的设计与实现
  16. MyEclipse2017创建Spring项目
  17. (转).net反编译工具JustDecompile
  18. JS高级 - 面向对象4(json方式面向对象)
  19. 20165327 2017-2018-2 《Java程序设计》第9周学习总结
  20. Linux电源管理-Linux regulator framework概述

热门文章

  1. linux--bash: redis-server: 未找到命令
  2. Java-Pi的几种实现
  3. 三读bootmem【转】
  4. linux之Deamon进程创建及其进程exit,_exit,return之间的区别
  5. Mac下Android SDK更新不了的解决办法
  6. Linux 之 文件压缩解压
  7. 浅谈JS的arguments对象
  8. html-禁用右键、键盘F12、网页上选取内容、复制、粘贴
  9. Activiti 流程部署方式 activi 动态部署(高级源代码篇)
  10. hdu 4300 Clairewd’s message(具体解释,扩展KMP)