UNIX环境高级编程 第二章

UNIX标准化

这一节介绍了三个重要的标准

  • ISO C
  • POSIX
  • SUS

ISO C

由于C语言在UNIX系统中的地位不言而喻,C语言的标准化也是UNIX标准化的重要组成部分。ISO C标准当中包括了

  • 语法和语义
  • 标准库

时间线:1989(发布)-1999(更新)-2001 2004 2007 (勘误)-2011(更新)

IEEE POSIX

POSIX(Portable Operating System Interface,可移植操作系统接口)

指的是IEEE 1003的各种标准,这里只关注POSIX.1.该标准囊括了符合该标准的计算机操作系统应该具有的接口。标准定义了必须和可选的一些头文件,同时也包含了ISO C标准库函数。

Single UNIX Specification

单一UNIX规范,看名字就觉得这个跟UNIX关联更大一些,它是POSIX.1的一个超集,随POSIX.1同步更新,吸收新的技术规范。

实现

限制

这是一个重要的话题

为什么要引入限制?

  1. 原因:UNIX定义了大量的幻数/常量并且应用程序需要使用到,而且这些常量在不同实现上,不同机器上是不同的。
  2. 用途:确定这些幻数和具体实现定义
  3. 种类:编译时限制(在头文件中获取)/运行时限制(调用系统函数)

ISO C限制/POSIX限制/XSI限制

基本都是编译时限制

运行时限制

三个函数

#include <unistd.h>
long sysconf(int name);

long pathconf(const char* pathname, int name);

long fpathconf(int fd, int name);

name参数带入一些宏定义以得到特定的限制数。

不确定的运行时限制

本书中的实现采取了分级式的限制数获取方式,给了两个例子

  • 路径名
  • 最大文件打开数

基本格式就是

#ifdef XXX//可能在limits.h中的宏定义
static long xxx = XXX;//第一级
#else
static long xxx = 0;
#endif

#define XXX_GUESS _xxx

func() {
	if (xxx == 0){
		errno = 0;
		if (xxx = sysconf(----)  < 0) //第二级,但是sysconf中没有获取到的话会返回-1 
		{
			if (errno == 0) //没有报错
				xxx = XXX_GUESS;//第三级,无奈只能猜了
			else 
				err_sys();
		} else {
			//sysconf里面有,可以做进一步处理
		}
	}
}

习题

1

在这里插入图片描述
类似于这样吧,用 “xxx_defined”来指示当前环境下是否定义过,定义过就跳过,没定义过就定义一次,然后define一下 “xxx_defined”

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
该资源内项目源码是个人的课程设计、毕业设计,代码都测试ok,都是运行成功后才上传资源,答辩评审平均分达到96分,放心下载使用! ## 项目备注 1、该资源内项目代码都经过测试运行成功,功能ok的情况下才上传的,请放心下载使用! 2、本项目适合计算机相关专业(如计科、人工智能、通信工程、自动化、电子信息等)的在校学生、老师或者企业员工下载学习,也适合小白学习进阶,当然也可作为毕设项目、课程设计、作业、项目初期立项演示等。 3、如果基础还行,也可在此代码基础上进行修改,以实现其他功能,也可用于毕设、课设、作业等。 下载后请首先打开README.md文件(如有),仅供学习参考, 切勿用于商业用途。 该资源内项目源码是个人的课程设计,代码都测试ok,都是运行成功后才上传资源,答辩评审平均分达到96分,放心下载使用! ## 项目备注 1、该资源内项目代码都经过测试运行成功,功能ok的情况下才上传的,请放心下载使用! 2、本项目适合计算机相关专业(如计科、人工智能、通信工程、自动化、电子信息等)的在校学生、老师或者企业员工下载学习,也适合小白学习进阶,当然也可作为毕设项目、课程设计、作业、项目初期立项演示等。 3、如果基础还行,也可在此代码基础上进行修改,以实现其他功能,也可用于毕设、课设、作业等。 下载后请首先打开README.md文件(如有),仅供学习参考, 切勿用于商业用途。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值