家庭作业(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\n”,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赵瀚青

 

 

posted @ 2015-10-20 14:39  20135312吴汉彦  阅读(313)  评论(0编辑  收藏  举报