前言

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

POSIX标准中的 “ 限制 ”的更多相关文章

  1. 第三篇:POSIX标准中的 “ 限制 ”

    前言 在POSIX标准中,定义了许多限制.这些限制大约分为五类,不同类型的限制获取的方式不一样. 限制值分类 1. 不变的最小值 这类型的限制值是静态的,固定的. 2. 不变值 同上 3. 运行时可以 ...

  2. 二、linux IO 编程---系统调用和POSIX标准和标准IO

    2.1 系统调用 2.1.1 概念 所谓系统调用(system call)是指曹错系统提供给用户程序的一组“特殊”接口,用户程序可以通过这组“特殊”接口来获得操作系统内核提供的特殊服务. 应用程序可以 ...

  3. 文件操作相关函数(POSIX 标准 open,read,write,lseek,close)

    POSIX标准 open函数属于Linux中系统IO,用于“打开”文件,代码打开一个文件意味着获得了这个文件的访问句柄. int fd = open(参数1,参数2,参数3): int fd = op ...

  4. Web标准中用于改善Web应用程序性能的各种方法总结

    提起Web应用程序中的性能改善,广大开发者们可能会想到JavaScript与DOM访问等基于各种既存技术的性能改善方法.最近,各种性能改善方法被汇总成为一个Web标准. 本文对Web标准中所包含的各种 ...

  5. UNIX标准化及实现之POSIX标准可选头文件

    POSIX标准定义的可选头文件 头文件 说明 <aio.h> 异步I/O <mqueue.h> 消息队列 <pthread.h> 线程 <sched.h> ...

  6. UNIX标准化及实现之POSIX标准扩展头文件

    POSIX标准定义的XSI(X/Open System Interface)扩展头文件 头文件 说明 <cpio.h> cpio归档值 <dlfcn.h> 动态链接 <f ...

  7. UNIX标准化及实现之POSIX标准必需头文件

    POSIX标准定义的必需头文件 头文件 说明 <dirent.h> 目录项 <fcntl.h> 文件控制 <fnmatch.h> 文件名匹配类型 <glob. ...

  8. 对C标准中空白字符(空格、回车符(\r)、换行符(\n)、水平制表符(\t)、垂直制表符(\v)、换页符(\f))的理解

    版权声明:本文为博主原创文章,未经博主允许不得转载.   目录(?)[+]   C标准库里<ctype.h>中声明了一个函数: int isspace(int c); 该函数判断字符c是否 ...

  9. C标准中一些预定义的宏

    C标准中指定了一些预定义的宏,对于编程经常会用到.下面这个表中就是一些常常用到的预定义宏. 宏(双下滑线) 意义 __DATE__ 进行预处理的日期(“Mmm dd yyyy”形式的字符串文字) __ ...

随机推荐

  1. java面试题之如何中断一个线程?

    方法一:调用interrupt方法,通知线程应该中断了: A.如果线程处于被阻塞状态,那么线程将立即退出被阻塞状态,并抛出了一个InterruptedException异常. B.如果线程处于正常活动 ...

  2. 【python接口自动化】logger

    #! /usr/bin/env python # coding=GBK import logging, os class Logger: def __init__(self, path, clevel ...

  3. A* k短路 学习笔记

    题目大意 n个点,m条边有向图,给定S,T,求不严格k短路 n<=1000 m<=100000 k<=1000 不用LL 分析 A*算法 f(i)表示从S出发经过i到T的估价函数 \ ...

  4. APUE 学习笔记(八) 线程同步

    1. 进程的所有信息对该进程内的所有线程都是共享的 包括 可执行的程序文本.程序全局内存.堆内存以及文件描述符 线程包含了表示进程内执行环境必需的信息,包括线程ID.寄存器值.栈.调度优先级和策略.信 ...

  5. 【BZOJ4472】salesman(树形DP)

    题意: 给定一颗有点权的树,每个树上的节点最多能走到lim[u]次,求一条路径,使路径上的点权和最大,每个节点上的点权如果走了多次只能算一次.还要求方案是否唯一. 思路:每个点只能取lim[u]-1个 ...

  6. c#.net分类上升达人~~~呵呵。。。

    原文发布时间为:2008-11-11 -- 来源于本人的百度文章 [由搬家工具导入] 觉得自己蛮无聊的~~~~~~~~~(>_<)~~~~

  7. Linux 之 LNMP服务器搭建-MySQL

    LNMP服务器搭建-MySQL 参考教程:[千峰教育] 系统版本: CentOS 6.8 关闭防火墙和Selinux service iptables stop setenforce 0 安装mysq ...

  8. iOS键盘中英文切换键盘高度获取通知方法

    iOS键盘中英文切换键盘高度获取通知方法, 有需要的朋友可以参考下. 注册通知 - (void)viewWillAppear:(BOOL)animated { [super viewWillAppea ...

  9. Chrome 浏览器如何完美实现滚动截图技巧

    一.前言 我们平时在浏览网页时,想把碰到好的网页内容或者文章截屏保存,但是网页的长度常常会超出屏幕高度,一般的截屏功能只能截取显示在屏幕上的内容,那我们该如何方便快捷截取全部内容?今天就分享一个如何利 ...

  10. Oracle PL/SQL 存储过程、函数、包 的范例

    1,写函数和过程,输入三角形三个表的长度.在控制台打印三角形的面积 -- 创建包 create or replace package pac_area is -- 定义计算三角形面积的过程 proce ...