家庭作业(2.79、10.8、10.9)

2.79虚拟机代码:

虚拟机实验结果:

VC代码截图:

vc运行结果:

 

在vc环境下运行NaN的结果与在linux虚拟机中运行的结果相差甚远,不知是何缘故。

10.8

由于stat函数和fstat函数在功能上很相似,都是检索文件的信息,只是stat函数以文件名作为输入,而fstat函数是以文件描述符作为输入,所以只需把Stat(argv[1],&stat)改为fstat(atoi(argv[1]),&stat)即可实现功能

include “csapp.h”

Int main(int argc,char **argv)
{
struct stat stat;
char type,readok;

fstat(atoi(argv[1]),&stat);
if(S_ISREG(stat.st_mode))
type=”regular”;
else if(S_ISDIR(stat.st_mode))
type=”directory”;
else
type=”other”;
if((stat.st_mode & S_IRUSR))
readok=”yes”;
else
readok=”no”;

printf(“type: %s,read:%s ”,type,readok);
exit(0);
}

10.9

输入重定向到了foo.txt,然而3这个描述符是不存在的。

说明foo.txt并没有单独的描述符3。

所以Shell执行的代码应该是这样的:

if (Fork() == 0) {/* Child */
int fd = open("foo.txt", O_RDONLY, 0);
dup2(fd, 1);
close(fd);
Execve("fstatcheck", argv, envp);
}

搭档:20135320赵瀚青

 

原文地址:https://www.cnblogs.com/whyfarrell/p/4894776.html