UNIX环境高级编程(第三版)学习笔记(二、UNIX标准及实现)

来源:互联网 发布:皖西学院网络课程 编辑:程序博客网 时间:2024/06/06 00:57

1.UNIX标准化:

UNIX有很多标准,限制了各种东西,要不然大家一人做一个UNIX岂不是很乱?其中有几种标准:ISOCIEEEPOSIXSingleUNIX SpecificationFIPS,具体这些实现清百度。

很多限制都在头文件limit.h

2.UNIX具体实现

其中几个重要的实现,分别是:SVR44.4BSDFreeBSDLinuxMacOS XSolaris,还有很多UNIX操作系统,这些是很少的一部分,unix可不像windows,是很多种的。

3.函数sysconfpathconffpathconf

某些限制在各种协议里面已经确定了,某些限制值在编译时是可用的,而另一些则必须在运行时确定,运行时限制可以调用这三个函数之一获得。

#include<unistd.h>

longsysconf(int name);

longpathconf(const char *pathname,int name);

logfpathconf(int fd,int name);

后面两个函数的区别是一个用文件路径作为参数,另一个则用文件描述符来作为参数。

在书的34-35页写了name参数的各种,欢迎大家查阅。

还有各种测试返回值的结果,在书的34-35页一种6条,比较统一的是如果参数错误或者返回值不确定那么返回值都是-1

4.功能测试宏

头文件定义了很多POSIX1XSI符号,但是除了这两种定义外,大多数是现在这些头文件中页加入了他们自己的定义,如果在编译一个程序的时候只希望它只同POSIX的定义相关,而不与任何实现定义的长两冲突,那么就需要定义常量_POSIX_C_SOURCE,一旦定义了_POSIX_C_SOURCE,所有POSIX.1头文件都使用此常量来排除任何实现专有的定义,就是就用POSIX定义了,别的咱不用了!

常量_POSIX_C_SOURCE_XOPEN_SOURCE被称为功能测试宏,所有的功能测试宏都以下划线开始,当要使用他们的时候,通常在CC命令中用下列方式定义:

cc-D_POSIX_C_SOURCE=200809L file.c

也可以在C程序的第一行用

#define_POSIX_C_SOURCE200809L

SUSc99实用程序定义为C编译环境的借口,随之,就可以用一下方式编译文件:

c99 -D_XOPEN_SOURCE=700 file.c -o file

推荐使用gcc实现1999ISO C扩展,如下所示:

gcc -D_XOPEN_SOURCE=700 -std=c99 file.c -o file

PS:说白了,功能测试宏就是在命令上做文章,来为你的程序定义仅有的标准。大家了解即可。

0 0