当前位置:网站首页>UINIX 高级环境编程杂项之限制
UINIX 高级环境编程杂项之限制
2022-08-02 14:16:00 【China_JerryYuan】
unix操作系统定义了许多常量和幻数,代码在不同平台间移植的时候,可以通过一些已有的技术确定这些常量和幻数的值。
限制的分类:
(1)编译时限制
举栗子:例如 short 类型在编译时应该占多少个字节,这在编译时必须确定。如果在linux 下定义short 变量时,就应该遵循POSIX标准,其中限制了short 应该占多少个字节,或者给出了实现应该遵循的一个范围标准。
(2)运行时限制
举栗子:程序在运行时限制内存的占用量、限制CPU的核数(这些都是对资源的限制)。这些限制只有在程序跑起来时才能确定。
怎么理解确定文件名是一个运行时限制?
文件名的最大长度取决于文件系统,同一个操作系统写可能有多个文件系统,在文件系统A下的文件的最大文件名限制和在文件系统B下的最大文件名长度的限制不同。因此在跑程序时,要确定文件存在于哪个文件系统,才知道其最大文件名长度的限制。 是不是可以这样理解?
获取编译时限制:实现可以在在头文件中定义需要施加的编译时限制。因此可以在头文件中获取。
获取运行时限制:
与文件和目录有关的运行时限制:
采用sysconf 获取
与文件和目录无关的运行时限制:
采用pathconf 和 fpathconf获取。
一个运行时限制,在一个给定的系统上,该限制是固定不变的话,那么可以将这样的运行时限制也写到头文件中。但是虽然可以写到头文件中,如果实现并没有写的话,那么还是需要通过调用上述3个conf函数来获取限制信息。
ISO C限制 给出的是各种数据类型的可接受的最小值。 POSIX在其基础上进行了扩充,规定:
INT_MIN :2147483647
INT_MAX:-2147483647
UINT_MAX:4294967295
POSIX要求char类型占8个字节,因此:
CHAR_BIT:8
SCHAR_MIN:-128
SCHAR_MAX:127
UCHAR_MAX:255
ISO C 中限制同时可以打开标准IO流的最小值的限制为:FOPEN_MAX = 8(在Linux 3.2.0 的实际实现为 16)
POSIX 中限制同时可以打开标准IO流的最小值的限制为: STREAM 此时也应该兼容ISO C的标准。
ISO C 定义了 FILENAME_MAX
POSIX 定了其替代常量:NAME_MAX PATH_MAX
也就是说ISO C 只是给出了一个限制的约束范围,具体限制的值是多少由具体实现取决定。
POSIX 限制:
基本POSIX接口部分的限制:
(1)数值限制3个
(2)最小值25个常量
(3)最大值 1个
(4)运行时可以增加的值 5个
(5)运行时不变的值 24个常量
(6)其他不变值4个
(7)路径名可变值 8个
这些限制和常量,某些定义在<limits.h>中,某些可按具体条件可定义、可不定义。
边栏推荐
猜你喜欢
随机推荐
【软件测试】概念篇
Mysql开启日志并按天进行分割
软件测试之WEB自动化
网络运维系列:端口占用、端口开启检测
Oauth2.0 补充
抽象类和接口 基本知识点复习
CDH (computational Diffie-Hellman) problem and its differences with discrete logarithm and DDH problems
RTMP, RTSP, SRT 推流和拉流那些事
支付系列文章:PCI合规能力建设
Windows下mysql服务无法启动:服务没有报告任何错误。
Zabbix: PHP option“date.timezone” Fail
【线程网络】了解线程属性(fork/interview question)
WEB自动化之键盘、鼠标操作
华为单臂路由配置,实现不同vlan之间的通信
一线大厂研发流程(转载自鱼皮)
H3C 交换机配置端口组、DHCP、DHCP中继、管理用户
mongodb连接本地服务失败的问题
Oauth2.0 认证服务器添加验证码登陆方式
【进程间通信】:管道通信/有名/无名
类模板/赋值运算和加等运算