chapter 1~2

chapter 1:
Unix基础知识,主要讲述了后面几章的内容的概要,几乎涵盖了全书所有的内容,当然更为细


节的东西需要各章详述。
有几点是我以前没有注意的:
1.系统调用和库函数的差异,从我们程序员的角度来看是没有什么差异,我们都是一样调用,不关心实现细节。但是两者执行的空间是不一样的,显然,系统调用是在内核空间执行的,而库函数是在用户空间执行的。这用牵涉到内核空间和用户空间的差异,可以上网查查。
2.shell是每个系统系统不同的,就如同我们不关注现在各种各样的unix系统的差异一样,我们也不关注bash,c shell等shell的差异。登陆,密码,用户之类相信用linux系统的同志们都知道些,更为细节的东西可以找到相应的资料,没必要现在记忆那么多。提一点的是,如果你现在处于root用户,你不能找回root这个账户的密码,不知道有没有什么方法。
3.man是unix系统的用户手册,基本上都有,man XXX就行了,中间可以加入数字,比如man 3 ls,一般最初查询是不用数字的,查得内容会有提及,可以进一步查看。可惜,man也不会标出函数是不是系统调用。
4.I/O,要严格区分是否缓冲,这不管对实现还是应用都是有很大区别,一般的,系统调用open,read之类的是不带缓冲的,标准IO是带缓冲的,最常用的printf,都不会陌生。I/O口都是文件,关键在具体是什么,键盘,屏幕等具体的内容,但在实现上都是文件,这也是回应unix中一切设备都是文件。
5.出错处理,出错会返回一个错误号,可以man errno,可以查看定义好的错误。并对不同的错误进行不同的处理。很多错误都是返回这种错误号的。
6.signal问题比较严重,之前没怎么接触,主要是外部程序给正在运行的程序发信号,应该用什么样的机制来处理的问题。
7.time,时间之前同样没有怎么关注,主要是我们处理小问题的时候,在当前高速cpu的平台上基本不会考虑时间的问题。时间分为两大类:日历时间,就是utc,从97-1-1零点开始这样一个时间,用毫秒值表示,用来表示时间概念。另一类时间是cpu时间,又被分为时钟时间,用户cpu时间,系统cpu时间。用来评估程序执行时间。
第一章向来是简介性质的,后文会依次展开,不急不急。

chapter 2:
本章讲述unix系统标准化和实现,我们基本不关注实现,因为我不会去记unix现在有什么版本,因为我只用linux。其他的就不怎么关注了,而linux发行版基本也只用ubuntu,基本跟着公司走啦。
只看三类标准:ISO C,POSIX,SUS。
ISO C就是C标准,基本gcc全部全部满足。
POSIX标准原先定义的系统调用接口,现在也不怎么区分了。
SUS:single unix specification,posix.1的超集。包括了xsi扩展
至于哪个系统实现哪些标准,是在太过繁杂,没什么必要记得那么清楚。
限制问题就是一个确定,就是一个值或者其他什么是在编译时确定,运行时确定,编译时头文件去确定就行了,运行时确定系统提供了两个几个函数,sysconf,pathconf,fpathconf等函数。其实基本数据类型,同样地,只是现在我们基本不关心一个int究竟是几位?什么时候会越界等问题。但是unix会提供一些typedef,像什么size_t之类的。但这些问题基本上对底层的一个封装,为了更大程度的可移植性。
基本就这样的,我向来不关心那么规范标准,因为积累不够啊。
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章