zoukankan      html  css  js  c++  java
  • 20145234黄斐《信息安全系统设计基础》第九周学习总结(练习题)

    课本习题

    10.1 下面程序的输出是什么?

    #include "csapp.h"
    int main()
    {
        int fd1,fd2;
        fd1=Open("foo.txt",O_RDONLY,0);
        Close(fd1);
        fd2=Open("baz.txt",O_RDONLY,0);
        printf("fd2=%d
    ",fd2);
        exit(0);
    }

    答:Unix进程生命周期开始时,打开的描述符赋给了stdin(描述符0)、stdout(描述符1)和stderr(描述符2)。open函数总是返回最低的未打开的描述符,所以第一次调用open会返回描述符3。调用close函数会释放描述符3.最后对open的调用会返回描述符3,因此程序的输出是“fd2=3”。

    10.2:假设磁盘文件foobar.txt由6个ASCII码字符“foobar”组成。那么,下列程序的输出是什么?

    #include "csapp.h"
    int main()
    {
        int fd1,fd2;
        char c;
        fd1=Open("foobar.txt",O_RDONLY,0);
        fd2=Open("foobar.txt",O_RDONLY,0);
        Read(fd1,&c,1);
        Read(fd2,&c,1);
        printf("c=%c
    ",c);
        exit(0);
    }

    答:描述符fd1和fd2都要各自的打开文件表表项,所以每个描述符对于foobar.txt都有它自己的位置。因此,从fd2的读操作会读取foobar.txt的第一个字符,并输出c=f 

    10.3:就像前面那样,磁盘文件foobar.txt由6个ASCII码字符“foobar”组成。那么,下列程序的输出是什么?

    #include "csapp.h"
    int main()
    {
        int fd;
        char c;
        fd=Open("foobar.txt",O_RDONLY,0);
        if(Fork()==0)
        {
            Read(fd,&c,1);
            exit(0);
        }
        Wait(NULL);
        Read(fd,&c,1);
        printf("c=%c
    ",c);
        exit(0);
    }

    答:这里是子进程继承父进程的描述符表,以及所有进程共享的同一个打开文件表。因此,描述符fd在父子进程中都指向同一个打开文件表表项。当子进程读取文件的一个字节时,文件位置加1.因此,父进程会读取第二个字节,而输出就是c=o,而不是10.2中的 c=f

    10.4:如何用dup2将标准输入重定向到描述符5?

    答:重定向标准输入(描述符0)到描述符5,直接调用dup2(5,0)

    10.5:假设磁盘文件foobar.txt由6个ASCII码字符“foobar”组成。那么下列程序的输出是什么?

    #include "csapp.h"
    int main()
    {
        int fd1,fd2;
        char c;
        fd1=Open("foobar.txt",O_RDONLY,0);
        fd2=Open("foobar.txt",O_RDONLY,0);
        Read(fd2,&c,1);
    Dup2(fd2,fd1); Read(fd1,&c,1); printf("c=%c ",c); exit(0); }

    答:由于重定向,所以答案应该是c=o

  • 相关阅读:
    (转)Linux netstat命令详解
    4G模块*99#拨号上网
    (转)Linux系统-tcpdump常用抓包命令
    (转)Makefile介绍
    导航和渲染首页文章列表
    删除项目开发中的.pyc文件
    django之media配置
    基于Ajax提交formdata数据、错误信息展示和局部钩子、全局钩子的校验。
    点击头像上传文件的效果
    使用python实现滑动验证码
  • 原文地址:https://www.cnblogs.com/taigenzhenjun/p/6059680.html
Copyright © 2011-2022 走看看