APUE第四章 答案
2014-07-17 19:38
197 查看
4.1 stat函数顺着符号链接向前,如果符号链接指向的文件不存在,那么stat返回出错。
4.2 关闭了该文件的所有存取权限。
4.3 如下命令,打开会提示权限不足chmod u-r filename vim filename4.4 用open或者creat创建已经存在的文件,文件的权限不变,但是长度变为0。
4.5 不可以。目录长度包含指向这个目录项和目录下的所有文件,它总是包含.和..两项,符号链接长度是其路径名包含的字符数。至少为一个字符。
4.6 遇到空字符‘\0’不复制即可,代码如下:
#include "apue.h"
#include <fcntl.h>
#include <unistd.h>
#include <stdio.h>
int main(int argc,char *argv[])
{
if(argc != 3)
err_sys("error");
int fd1;
if ( (fd1 = open(argv[1],O_RDONLY)) < 0)
err_sys("error open");
int fd2;
if ( (fd2 = open(argv[2],O_WRONLY | O_CREAT | O_TRUNC)) < 0)
err_sys("error open2");
char *buf;
int var;
while (read(fd1,buf,1))
{
printf("%s",buf);
if( (buf != NULL)&&(*buf !='\0'))
if((write(fd2,buf,1) < 0))
err_sys("write error");
}
close(fd1);
close(fd2);
return 0;
}4.7 创建新的core文件时,内核有一个默认的权限,这个权限可能不会被umask修改,在shell重定向也有一个默认权限,这个值会被umask修改。
4.8 du命令查看的是文件或者目录的使用空间。参数是文件或者目录名,无参数默认当前目录。df命令检查文件系统的空间使用情况。
4.9 如果删除的该文件的链接不是最后一个链接,则该文件不会被删除,i节点最后修改时间更新。
4.10 mytfw循环调用dopath,每次调用opendir都要打开一个文件描述符,直到处理完这个目录才关闭,那么可打开描述符就限制文件系统的深度。
4.11
4.12 改变当前根目录。作用如下:
测试和开发
在chroot测试环境下,测试那些可能对生产系统带来危害的程序。依赖控制
可以在chroot环境下,设置一个仅有所希望的软件依赖,用于构建和测试。这样可以避免一些对开发者构造带有不同软件库设置所带来的链接(目标文件的链接)问题。兼容性
早期遗留软件或使用不同ABI的软件必须在chroot环境下运行,因为它们提供的库有可能和宿主机的库起名称或链接冲突。修复
当一个系统不能启动时,从代替系统(比如Live CD式安装盘),重新写入那些损坏的软件。特权分离
一个被允许打开文件实例(如文件、链接、网络连接)的软件被放入chroot中,这是对不必要留下在chroot目录工作文件的简单设计。同时也是一个简单的沙盘,也可以防御安全漏洞。注意!有root特权的程序,chroot是没有防御力的。4.13 用stat保存这些时间,改变需要改变的时间,其他时间值调用后复位即可。
4.14 略
4.15
4.16
4.17 若用户有权限,则标准输出描述符会变成当前可用描述符最小值,若无权限unlink失败。
4.2 关闭了该文件的所有存取权限。
4.3 如下命令,打开会提示权限不足chmod u-r filename vim filename4.4 用open或者creat创建已经存在的文件,文件的权限不变,但是长度变为0。
4.5 不可以。目录长度包含指向这个目录项和目录下的所有文件,它总是包含.和..两项,符号链接长度是其路径名包含的字符数。至少为一个字符。
4.6 遇到空字符‘\0’不复制即可,代码如下:
#include "apue.h"
#include <fcntl.h>
#include <unistd.h>
#include <stdio.h>
int main(int argc,char *argv[])
{
if(argc != 3)
err_sys("error");
int fd1;
if ( (fd1 = open(argv[1],O_RDONLY)) < 0)
err_sys("error open");
int fd2;
if ( (fd2 = open(argv[2],O_WRONLY | O_CREAT | O_TRUNC)) < 0)
err_sys("error open2");
char *buf;
int var;
while (read(fd1,buf,1))
{
printf("%s",buf);
if( (buf != NULL)&&(*buf !='\0'))
if((write(fd2,buf,1) < 0))
err_sys("write error");
}
close(fd1);
close(fd2);
return 0;
}4.7 创建新的core文件时,内核有一个默认的权限,这个权限可能不会被umask修改,在shell重定向也有一个默认权限,这个值会被umask修改。
4.8 du命令查看的是文件或者目录的使用空间。参数是文件或者目录名,无参数默认当前目录。df命令检查文件系统的空间使用情况。
4.9 如果删除的该文件的链接不是最后一个链接,则该文件不会被删除,i节点最后修改时间更新。
4.10 mytfw循环调用dopath,每次调用opendir都要打开一个文件描述符,直到处理完这个目录才关闭,那么可打开描述符就限制文件系统的深度。
4.11
4.12 改变当前根目录。作用如下:
测试和开发
在chroot测试环境下,测试那些可能对生产系统带来危害的程序。依赖控制
可以在chroot环境下,设置一个仅有所希望的软件依赖,用于构建和测试。这样可以避免一些对开发者构造带有不同软件库设置所带来的链接(目标文件的链接)问题。兼容性
早期遗留软件或使用不同ABI的软件必须在chroot环境下运行,因为它们提供的库有可能和宿主机的库起名称或链接冲突。修复
当一个系统不能启动时,从代替系统(比如Live CD式安装盘),重新写入那些损坏的软件。特权分离
一个被允许打开文件实例(如文件、链接、网络连接)的软件被放入chroot中,这是对不必要留下在chroot目录工作文件的简单设计。同时也是一个简单的沙盘,也可以防御安全漏洞。注意!有root特权的程序,chroot是没有防御力的。4.13 用stat保存这些时间,改变需要改变的时间,其他时间值调用后复位即可。
4.14 略
4.15
4.16
4.17 若用户有权限,则标准输出描述符会变成当前可用描述符最小值,若无权限unlink失败。
相关文章推荐
- 2008秋-计算机软件基础-第四章习题参考答案 P131 ,习题4,5
- 考研题目 第四章 串 答案
- C++ Primer Plus 第四章答案哒!
- 《APUE》第四章笔记(1)
- 思科CCNA第三学期第四章答案
- 《APUE》笔记-第四章-函数总结
- 【《Python编程: 从入门到实践》习题答案--第四章:<list 列表操作>】
- 思科CCNA第四学期第四章答案
- 谭浩强 《C程序设计》 第三版 第四章习题答案 (修正)
- 随机过程及其在金融领域中的应用 第四章 习题 及 答案
- APUE第四章学习笔记
- 2008秋-计算机软件基础-第四章习题参考答案 P131 ,习题6之一
- 《APUE》第四章笔记(2)
- APUE笔记---第四章Linux文件系统与文件目录操作
- C++Primer第五版 第四章习题答案(1~10)
- 随机过程及其在金融领域中的应用 第四章 习题 及 答案
- Java2游戏编程读书笔记第四章参考答案
- 学习opencv第四章第三题A答案
- 数据挖掘概念与技术第三版 范明 孟晓峰译 第四章习题答案
- Python编程:从入门到实践的动手试一试答案(第四章)