《UNIX环境高级编程_课后习题详细解答》.pdf
文本预览下载声明
下载
下载
附录C 习 题 答 案
第1章
1.1 利用l s ( 1 )命令中的下面两个选择项:- i—显示文件或目录的i节点数目(关于i节点在
4 . 1 4节中会详细讨论);- d—如果参数是一目录,只列出其名字,而不是目录中的所有文件。
执行命令的结果为:
$ l s -ldi /etc/. /etc/.. - i要求打印 i节点的数量
3077 drwxr-sr-x 7 bin 2048 Aug 5 20:12 /etc/./
2 drwxr-xr-x 13 root 512 Aug 5 20:11 /etc/../
$ls -ldi /. /.. .和 . .的i节点数均为 2
2 drwxr-xr-x 13 root 512 Aug 5 20:11 /./
2 drwxr-xr-x 13 root 512 Aug 5 20:11 /../
1.2 UNIX是多任务系统,所以,在程序 1 - 4运行的同时其他两个进程也在运行。
1.3 假如p e r r o r 的p t r 参数是一个指针,则p e r r o r就可以改变p t r 所指串的内容。所以利用限
定词c o n s t使得p e r r o r不能修改p t r 所指的串。而 s t r e r r o r的参数是错误号,由于其是整数类型并且
C传递的是参数值,因此s t r e r r o r不能修改参数的值,也就没有必要使用 c o n s t属性。(如果C 中函
数参数的处理不是很清楚,可参见K e r n i g h a n和R i t c h i e 〔1 9 9 8〕5 . 2节。)
1.4 调用ff l u s h ,f p r i n t f和v p r i n t f 函数可修改e r r n o 的值。如果它的值变了但没有保存,则最
终显示的错误信息是不正确的。
在过去开发的许多程序中,都可以发现不保存 e r r n o 的情况,典型的错误信息是“ Not a
t y p e w r i t e r (打字机不存在)”。5 . 4节中标准I / O库根据标准I / O流是否指向终端设备而改变流的
缓存器。i s t t y (见11 . 9节)通常用来判断流是否指向终端设备,如果流不指向终端设备, e r r n o
可能置为E N O T T Y ,从而引起该错误。程序C - 1显示了这一特性。
程序C-1 errno和p r i n t f的交互作用
附录C 习 题 答 案 5 1 9
下载
执行上面的程序,结果为:
$ grep BSD /etc/motd
4.3 BSD UNIX #29: Thu Mar 29 11:14:13 MST 1990
$ a . o u t
open error: error = 2 工作正常, s t d o u t是一个终端
$ a.out temp.foo
$ cat temp.foo
open error: error = 25 错误
1.5 2038年。
1.6 大约2 4 8天。
第2章
2.1 下面是4 . 3 + B S D 中使用的技术。在machine/ansi.h 中,用大写字母定义可在多个头
文件中出现的基本数据类型。例如:
# i f n d e f _ A N S I _ H _
# d e f i n e _ A N S I _ H _
# d e f i n e _CLOCK_T_ unsigned long
# d e f i n e _SIZE_T_ unsigned int
. . .
# e n d i f /* _ANSI_H_ */
以下面的顺序可以在这6个头文件中分别定义s i z e _ t 。
#ifdef
显示全部