基本系统数据类型-鸿鹄论坛_华为认证h35-211-hcnp-access network题库
其值不应被改变,但是在S V R 4和4 . 3 + B S D之下,可以调用setrlimit (2)函数更改一个运行进程的此值(也可用C Shell的l i m i t或Bourne shell和K o r nSh e l l的u l i m i t命令更改)。如果系统支持这种功能,则可以将程序2 - 3更改为每次调用此程序时就调用s y s c o n f,而不只是第一次调用此程序时。
功能测试宏正如前述,在头文件中定义了很多P O S I X . 1和X P G 3的符号。但是除了P O S I X . 1和X P G 3定义外,大多数实现在这些头文件中也加上了它们自己的定义。如果在编译一个程序时,希望它只使用P O S I X定义而不使用任何实现定义的限制,那么就需定义常数_ P O S I X _ S O U R C E,所有P O S I X . 1头文件中都使用此常数。当该常数定义时,就能排除任何实现专有的定义。常数_ P O S I X _ S O U R C E及其对应的常数_ X O P E N _ S O U R C E被称之为功能测试宏( f e a t u r e test macro)。所有功能测试宏都以下划线开始。当要使用它们时,通常在c c命令行中以下列方式定义: cc -D_POSIX_SOURCE file.c这使得在C程序包括任何头文件之前,定义了功能测试宏。如果我们仅想使用P O S I X . 1定义,那么也可将源文件的第一行设置为: #define _POSIX_SOURCE 1
另一个功能测试宏是: _STDC _,它由符合ANSI C标准的编译程序自动定义。这样就允许我们编写ANSI C编译程序和非ANSI C编译程序都能编译的程序。例如,一个头文件可能会是: #ifdef __ S T D C__ void myfunc(const char , int); # e l s e void *myfunc(); # e n d i f这样就能发挥ANSI C原型功能的长处,要注意在开始和结束处的两个连续的下划线常常打印成一个长下划线(如同上面一个样本源代码中一样)。
基本系统数据类型历史上,某些U N I X变量已与某些C数据类型联系在一起,例如,历史上主、次设备号存放在一个1 6位的短整型中,8位表示主设备号,另外8位表示次设备号。但是,很多较大的系统需要用多于2 5 6个值来表示其设备号,于是,就需要有一种不同的技术。(确实,S V R 4用3 2位表示设备号:1 4位用于主设备号,1 8位用于次设备号。)头文件< s y s / t y p e s . h >中定义了某些与实现有关的数据类型,它们被称之为基本系统数据类。
更多关于UNIX环境编程的信息可以参考以下资源: