当前位置:网站首页>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>中,某些可按具体条件可定义、可不定义。
边栏推荐
猜你喜欢
随机推荐
大厂年薪50w+招聘具有测试平台开发能力的测试工程师
抽象类和接口 基本知识点复习
JVM常量池详解
一分钟之内搭建自己的直播服务器?
CPU缓存一致性协议MESI
静态方法的缺失
理解:野指针,空指针,失效指针。
超简单了解三次握手与四次挥手
Zabbix: PHP option“date.timezone” Fail
JOOQ 报错 StackOverflowError
虚拟机使用的是此版本 VMware Workstation 不支持的硬件版本。模块“Upgrade”启动失败。未能启动虚拟机。
分布式一致性协议-Paxos
小知识系列:Fork之后如何与原仓库分支同步
【软件测试】禅道的简要介绍
Xshell 使用删除键乱码问题
【软件测试】用例篇
【软件测试】selenium自动化测试2
PostgreSQL 协议数据样例
Doubly linked list (normal iterators and const iterators)
APP版本更新通知流程测试要点