apue学习第五天——UNIX标准及实现(第二章)

第二章开始。但我对它不是很感兴趣,花了不到两个小时翻完了这些内容,简单记录一下吧。

首先是标准,它讲了三个标准,分别是ISO C, IEEE POSIX 和 SUS:

1)ISO C,ANSI(American National Standards Institution)是ISO(International Organization for Standardization)的美国代表,它的标准被ISO采纳成为ISO C标准。ISO C标准的意图是提供C程序的可移植性,使其能适合于大量的不同操作系统;

2)IEEE POSIX,IEEE不用说,是电气和电子工程师学会Institute of Electrical and Electronics Engineers的缩写。POSIX(Portable Operating System Interface)意思是可移植操作系统接口;

3)SUS,Single UNIX Specification(单一UNIX规范)是POSIX的一个超集,定义了一些附加接口扩展了POSIX提供的功能。

以上三个标准是由三个不同的组织制定,但标准只是接口的规范,如何与现实相连还要看由哪些vendors采用才能转化为实现。主要有AT&T,Berkeley等分支,下面来看看主流的UNIX操作系统:

SVR4(UNIX System V Release 4);

4.4BSD(Berkeley Software Distribution);

FreeBSD基于4.4BSD-Lite的操作系统;

Linux provides a rich programming environment similar to that of a UNIX system; it's freely available under the GNU Public License.(中文翻译的那句话读来实在是别扭,也建议大家读中文版如果遇到看起来比较别扭的话翻一翻英文版的吧);

Mac OS X,核心操作系统被称为“Darwin”,基于mach内核、freeBSD操作系统等其它的结合。Mac OS X 10.5的Intel部分已经被验证为是一个UNIX系统。

Solaris,Oracle开发的UNIX系统版本,基于SVR4。

下面谈谈2.5 Limits。

读到第一句话我就无语了,“UNIX系统实现定义了很多幻数和常量,其中很多已被硬编码到程序中”,这幻数一词就让我头大了。直接说magic number让我们自己查得了,翻译成这样我也就忍了,好歹也解释一下吧!好吧,下面我解释一下幻数这个概念:

wikipedia对magic number有解释(http://en.wikipedia.org/wiki/Magic_number_%28programming%29),在此说的我比较倾向于第三种,magic number就是一个常量,你不需要知道它是什么意义,用就行了。也许这是很荒谬的一个例子,看看知乎上有个说法挺有意思:http://www.zhihu.com/question/22018894。

还有,magic number的起源更有意思,都不可考究了,我也是醉了:

The format indicator type of magic number was first found in early Seventh Edition source code of the Unix operating system and, although it has lost its original meaning, the termmagic number has become part of computer industry lexicon.

好吧,博君一笑,不管magic number了,接着看后面的内容。

以下两种限制是必须的:

1. Compile-time limits (e.g., what’s the largest value of a short integer?)
2. Runtime limits (e.g., how many bytes in a filename?)

三种标准各有限制,但是和现在的我无关,还没到那层次呢,比较感兴趣的是runtime limits(运行时限制)中提到了几个函数sysconf、pathconf、fpathconf,运行时限制可以调用上述三个函数之一来获得。那就来看看sysconf吧:

学到了个技巧,不会用什么命令或函数的话,man一下。$man sysconf

这个系统调用也就是运行时获得系统配置的嘛,比如说页大小啊、cpu个数啊、最多打开多少个文件啊等等等等,这样写代码就可以根据这些写了,提高可移植性嘛!

具体的看看这个吧:http://www.cnblogs.com/Anker/p/3751369.html和http://man7.org/linux/man-pages/man3/sysconf.3.html。

其他两个函数类似,用到自己再查嘛!

好啦,最后一个是daemon(守护进程),简单介绍一下:

daemon是运行在后台的一种特殊进程,就是像天使一样守护你的系统正常运行的啊,比如说系统日志syslogd,web服务器httpd,数据库服务器mysqld等等,有没有发现daemon都是以d结尾的?对的!通常是这个样子,一般来说daemon开机运行,一直到关机结束,像天使永远守护你~

下面是长长的分割线

——————————————————————————————————————————————————————————————

好啦,第二章结束,讲了UNIX的标准和实现,都是些很杂的但也需要稍微了解的东西。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值