unix高级编程22

unix高级编程22

ID:34657345

大小:598.07 KB

页数:19页

时间:2019-03-08

unix高级编程22_第1页
unix高级编程22_第2页
unix高级编程22_第3页
unix高级编程22_第4页
unix高级编程22_第5页
资源描述:

《unix高级编程22》由会员上传分享,免费在线阅读,更多相关内容在教育资源-天天文库

1、下载下载附录C习题答案第1章1.1利用ls(1)命令中的下面两个选择项:-i—显示文件或目录的i节点数目(关于i节点在4.14节中会详细讨论);-d—如果参数是一目录,只列出其名字,而不是目录中的所有文件。执行命令的结果为:$ls-ldi/etc/./etc/..-i要求打印i节点的数量3077drwxr-sr-x7bin2048Aug520:12/etc/./2drwxr-xr-x13root512Aug520:11/etc/../$ls-ldi/./...和..的i节点数均为22drwxr-xr-x13r

2、oot512Aug520:11/./2drwxr-xr-x13root512Aug520:11/../1.2UNIX是多任务系统,所以,在程序1-4运行的同时其他两个进程也在运行。1.3假如perror的ptr参数是一个指针,则perror就可以改变ptr所指串的内容。所以利用限定词const使得perror不能修改ptr所指的串。而strerror的参数是错误号,由于其是整数类型并且C传递的是参数值,因此strerror不能修改参数的值,也就没有必要使用const属性。(如果C中函数参数的处理不是很清楚,可

3、参见Kernighan和Ritchie〔1998〕5.2节。)1.4调用fflush,fprintf和vprintf函数可修改errno的值。如果它的值变了但没有保存,则最终显示的错误信息是不正确的。在过去开发的许多程序中,都可以发现不保存errno的情况,典型的错误信息是“Notatypewriter(打字机不存在)”。5.4节中标准I/O库根据标准I/O流是否指向终端设备而改变流的缓存器。istty(见11.9节)通常用来判断流是否指向终端设备,如果流不指向终端设备,errno可能置为ENOTTY,从而引

4、起该错误。程序C-1显示了这一特性。程序C-1errno和printf的交互作用附录C习题答案519下载执行上面的程序,结果为:$grepBSD/etc/motd4.3BSDUNIX#29:ThuMar2911:14:13MST1990$a.outopenerror:error=2工作正常,stdout是一个终端$a.out>temp.foo$cattemp.fooopenerror:error=25错误1.52038年。1.6大约248天。第2章2.1下面是4.3+BSD中使用的技术。在

5、nsi.h>中,用大写字母定义可在多个头文件中出现的基本数据类型。例如:#ifndef_ANSI_H_#define_ANSI_H_#define_CLOCK_T_unsignedlong#define_SIZE_T_unsignedint...#endif/*_ANSI_H_*/以下面的顺序可以在这6个头文件中分别定义size_t。#ifdef_SIZE_T_typedef_SIZE_T_size_t;#undef_SIZE_T_#endif这样,实际上只执行一次typedef。第3章3.1所有的磁盘I/O

6、都要经过内核的块缓存器,唯一例外的是对原始磁盘设备的I/O,但是我们不考虑这种情况(Bach〔1986〕的第3章讲述了这种缓存器的操作)。既然read或write的数据都要被内核缓存,那么术语“无缓存装置的I/O”指的是在用户的进程中对这两个函数不会自动缓存,每次read或write就要进行一次系统调用。3.3每次调用open函数就分配一个文件表项,如果两次打开的是相同的文件,则两个文件表项指向相同的v节点。调用dup引用已存在的文件表项(此处指fd1的文件表项),见图C-1。当F_SETFD作用于fd1时,

7、只影响fd1的文件描述符标志;F_SETFL作用于fd1时,则影响fd1及fd2的文件描述符标志。3.4如果fd是1,执行dup2(fd,1)后返回1,但是没有关闭描述符1(见3.12节)。调用3次dup2后,3个描述符指向相同的文件表项,所以不需要关闭描述符。如果fd是3,调用3次dup2后,有4个描述符指向相同的文件表项,所以需要关闭描述符3。520UNIX环境高级编程下载进程表项文件表文件状态标志fd标志ptr当前文件位移v节点表v节点指针v节点信息i节点信息文件状态标志当前文件位移当前文件长度v节点指

8、针图C-1open和dup的结果3.5shell从左到右处理命令行,所以a.out>outfile2>&1首先设置标准输出到outfile,然后执行dups将标准输出复制到描述符2(标准错误)上,其结果是将标准输出和标准错误设置为相同的文件,即描述符1和2指向相同的文件表项。而对于命令行a.out2>&1>outfile由于首先执行dups,所以描述符2成为终端(假设命令是交互执行的),标准输出重定

当前文档最多预览五页,下载文档查看全文

此文档下载收益归作者所有

当前文档最多预览五页,下载文档查看全文
温馨提示:
1. 部分包含数学公式或PPT动画的文件,查看预览时可能会显示错乱或异常,文件下载后无此问题,请放心下载。
2. 本文档由用户上传,版权归属用户,天天文库负责整理代发布。如果您对本文档版权有争议请及时联系客服。
3. 下载前请仔细阅读文档内容,确认文档内容符合您的需求后进行下载,若出现内容与标题不符可向本站投诉处理。
4. 下载文档时可能由于网络波动等原因无法下载或下载错误,付费完成后未能成功下载的用户请联系客服处理。