您的位置:首页 > 产品设计 > UI/UE

[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获取的时间。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  apue