APUE第四章 答案

4.1  stat函数顺着符号链接向前,如果符号链接指向的文件不存在,那么stat返回出错。

4.2 关闭了该文件的所有存取权限。

4.3 如下命令,打开会提示权限不足

chmod u-r filename vim filename
4.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失败。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值