- 出版者的话
- 中文版序一
- 中文版序二
- 译者序
- 前言
- 关于作者
- 第 1 章:计算机系统漫游
- 第 2 章:信息的表示和处理
- 第 3 章:程序的机器级表示
- 第 4 章:处理器体系结构
- 第 5 章:优化程序性能
- 第 6 章:存储器层次结构
- 第 7 章:链接
- 第 8 章:异常控制流
- 第 9 章:虚拟内存
- 第 10 章:系统级 I/O
- 第 11 章:网络编程
- 第 12 章:并发编程
- 附录 A:错误处理
- 实验 1:Data Lab
- 实验 3:Attack Lab
- 实验 4:Architechture Lab
- 实验 5:Cache Lab
- 实验 6:Performance Lab
- 实验 7:Shell Lab
- 实验 8:Malloc Lab
- 实验 9:Proxy Lab
文章来源于网络收集而来,版权归原创者所有,如有侵权请及时联系!
家庭作业
练习题 10.6
下面程序的输出是什么?
#include "csapp.h"
int main()
{
int fd1, fd2;
fd1 = Open("foo.txt", O_RDONLY, 0);
fd2 = Open("bar.txt", O_RDONLY, 0);
Close(fd2);
fd2 = Open("baz.txt", O_RDONLY, 0);
printf("fd2 = %d\n", fd2);
exit(0);
}
练习题 10.7
修改图 10-5 中所示的 cpfile 程序,使得它用 RIO 函数从标准输入复制到标准输出,一次 MAX-BUF 个字节。
练习题 10.8
编写图 10-10 中的 statcheck 程序的一个版本,叫做 fstatcheck,它从命令行上取得一个描述符数字而不是文件名。
练习题 10.9
考虑下面对作业题 10.8 中的 fstatcheck 程序的调用:
linux> fstatcheck 3 < foo.txt
你可能会预想这个对 fstatcheck 的调用将提取和显示文件 foo.txt 的元数据。然而,当我们在系统上运行它时,它将失败,返回“坏的文件描述符”。根据这种情况,填写出 shell 在 fork 和 execve 调用之间必须执行的伪代码:
if (Fork() == 0) { /* child */
/* What code is the shell executing right here? */
Execve("fstatcheck", argv, envp);
}
练习题 10.10
修改图 10-5 中的 cpfile 程序,使得它有一个可选的命令行参数 infile。如果给定了 infile,那么复制 infile 到标准输出,否则像以前那样复制标准输入到标准输出。一个要求是对于两种情况,你的解答都必须使用原来的复制循环(第 9 ~ 11 行)。只允许你插入代码,而不允许更改任何已经存在的代码。
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论