文档详情

《UNIX环境高级编程_课后习题详细解答》.pdf

发布:2015-10-18约2.47万字共19页下载文档
文本预览下载声明
下载 下载 附录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
显示全部
相似文档