2024年4月24日发(作者:)

下载

下载

附录C 习题答案

第1章

1.1 利用l s(1)命令中的下面两个选择项:- i

显示文件或目录的i节点数目(关于i节点在

4 .14节中会详细讨论);- 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 error的p tr参数是一个指针,则p error就可以改变p tr所指串的内容。所以利用限

定词c onst使得p error不能修改p tr所指的串。而s trerror的参数是错误号,由于其是整数类型并且

C传递的是参数值,因此s trerror不能修改参数的值,也就没有必要使用c onst属性。(如果C中函

数参数的处理不是很清楚,可参见K ernighan和R itchie〔1 998〕5 .2节。)

1.4 调用ff lush,f printf和v printf函数可修改e rrno的值。如果它的值变了但没有保存,则最

终显示的错误信息是不正确的。

在过去开发的许多程序中,都可以发现不保存e rrno的情况,典型的错误信息是“Not a

t ypewriter(打字机不存在)”。5 .4节中标准I /O库根据标准I /O流是否指向终端设备而改变流的

缓存器。i stty(见11 .9节)通常用来判断流是否指向终端设备,如果流不指向终端设备,e rrno

可能置为E NOTTY,从而引起该错误。程序C -1显示了这一特性。

程序C-1 errno和p rintf的交互作用