[APUE] 第四章习题解答
2014-03-17 22:29
387 查看
4.1 用stat函数替换程序4-1中的lstat函数,如若命令行参数之一是符号链接,会发生什么变化。
lstat不会跟随符号链接,因此,它所得到的属性就是链接文件本身的属性。如果换成了stat,就是符号链接所引用的文件的属性了。
4.2 如果文件模式创建屏蔽字是777,结果会怎么样?用shell的umask命令验证该结果。
如果文件模式创建屏蔽字是777,那么创建的文件或者目录没有任何权限,甚至,对于目录来说,创建了目录之后,不能使用ls命令查看目录里面的内容。
4.5 4.12节中讲到一个普通文件的大小可以为0,同时我们又知道st_size字段是为目录或者符号链接定义的,那么目录和符号链接的长度是否可以为0?
4.7 在4.12节ls命令的输出中,core和core.copy的访问权限不相同,如果创建两个文件时umask没有变,说明为什么会产生这种差别。
core是之前创建的,而core.copy是是采用cat命令拷贝的,是新创建的文件,它采用的是默认的创建屏蔽字,两个不同,说明新创建的这个文件并没有继承原来文件的访问权限位。
4.8 在运行程序清单4-5中的程序时,使用了df命令来检查空闲的磁盘空间。为什么不使用du命令?
du命令是通过将指定文件系统中所有的目录、符号链接和文件使用的块数累加得到该文件系统使用的总块数。
df命令是通过查看文件系统中磁盘块分配图得出总块数和剩余块数。
因此,du得到的结果并没有考虑如索引节点、目录项等使用的空间,而df是从总体上考虑了所有使用的空间,df比du更加精确。
4.9 表4-11中显示unlink函数会修改文件状态改变时间,这是怎样发生的?
因为unlink会修改索引节点的引用计数,所以它会修改文件状态改变时间。
4.10 4.21节中,系统对可打开文件数的限制对myftw函数会产生什么影响?
在myftw中调用了dopath,在dopath中调用了opendir:opendir打开一个目录,但是opendir底层使用文件描述符来访问目录本身,因此,如果系统对可打开文件数有限制,那么,opendir可能会因为文件描述符不够而调用失败。
4.12 每个进程都有一个根目录用于解析绝对路径名,可以通过chroot函数改变根目录。在手册中查阅此函数,说明这个函数什么时候有用。
chroot可以改变进程所在的根目录,在解析路径时,从根目录开始解析。使用chroot可以限制用户所访问的范围,增强系统的安全性,建立一个与原目录隔离的目录结构,方便用户的开发。
4.13 如何使用utime函数只设置两个时间值中的一个?
用stat获取三个时间,然后在使用utime时,不想改变的就设置为stat获取的时间。
lstat不会跟随符号链接,因此,它所得到的属性就是链接文件本身的属性。如果换成了stat,就是符号链接所引用的文件的属性了。
4.2 如果文件模式创建屏蔽字是777,结果会怎么样?用shell的umask命令验证该结果。
如果文件模式创建屏蔽字是777,那么创建的文件或者目录没有任何权限,甚至,对于目录来说,创建了目录之后,不能使用ls命令查看目录里面的内容。
4.5 4.12节中讲到一个普通文件的大小可以为0,同时我们又知道st_size字段是为目录或者符号链接定义的,那么目录和符号链接的长度是否可以为0?
4.7 在4.12节ls命令的输出中,core和core.copy的访问权限不相同,如果创建两个文件时umask没有变,说明为什么会产生这种差别。
core是之前创建的,而core.copy是是采用cat命令拷贝的,是新创建的文件,它采用的是默认的创建屏蔽字,两个不同,说明新创建的这个文件并没有继承原来文件的访问权限位。
4.8 在运行程序清单4-5中的程序时,使用了df命令来检查空闲的磁盘空间。为什么不使用du命令?
du命令是通过将指定文件系统中所有的目录、符号链接和文件使用的块数累加得到该文件系统使用的总块数。
df命令是通过查看文件系统中磁盘块分配图得出总块数和剩余块数。
因此,du得到的结果并没有考虑如索引节点、目录项等使用的空间,而df是从总体上考虑了所有使用的空间,df比du更加精确。
4.9 表4-11中显示unlink函数会修改文件状态改变时间,这是怎样发生的?
因为unlink会修改索引节点的引用计数,所以它会修改文件状态改变时间。
4.10 4.21节中,系统对可打开文件数的限制对myftw函数会产生什么影响?
在myftw中调用了dopath,在dopath中调用了opendir:opendir打开一个目录,但是opendir底层使用文件描述符来访问目录本身,因此,如果系统对可打开文件数有限制,那么,opendir可能会因为文件描述符不够而调用失败。
4.12 每个进程都有一个根目录用于解析绝对路径名,可以通过chroot函数改变根目录。在手册中查阅此函数,说明这个函数什么时候有用。
chroot可以改变进程所在的根目录,在解析路径时,从根目录开始解析。使用chroot可以限制用户所访问的范围,增强系统的安全性,建立一个与原目录隔离的目录结构,方便用户的开发。
4.13 如何使用utime函数只设置两个时间值中的一个?
用stat获取三个时间,然后在使用utime时,不想改变的就设置为stat获取的时间。
相关文章推荐
- 快学Scala习题解答—第四章 映射和元组
- 《C++ Primer》第五版课后习题解答_第四章(3)(34-38)
- Python核心编程(第三版)课后习题解答——第四章
- 《C++ Primer》第五版课后习题解答_第四章(2)(21-33)
- 《unix环境高级编程》APUE 习题5.4 的解答
- TCP/IP详解卷1:协议第四章课后习题解答
- 快学Scala习题解答—第四章 映射和元组
- 快学Scala习题解答—第四章 映射和元组
- 《C++编程思想》第四章 初始化与清除(原书代码+习题+解答)
- 《C++ Primer》第五版课后习题解答_第四章(1)(01-20)
- C++程序设计课后习题及解答(第四章)
- 数论概论 第四章 高次幂之和与费马大定理 习题解答(宋二娃的BLOG)
- [APUE] 第12张习题解答
- 谭浩强C语言程序设计课后习题解答(第四章)
- 《疯狂Java讲义》(第四版)学习笔记1-----第四章习题解答
- 算法竞赛入门经典第四章:部分习题解答
- 《学习OpenCV》课后习题解答(第四章)(仅供参考)(不断更新)
- 机器学习(周志华)第四章习题解答
- 《学习OpenCV》课后习题解答(第四章)(仅供参考)(不断更新)
- 《C++编程思想》第四章 初始化与清除(原书代码+习题+解答)