zoukankan      html  css  js  c++  java
  • 2017-2018-1 20155214 《信息安全系统设计基础》 第6周学习总结

    2017-2018-1 20155214 《信息安全系统设计基础》

    第6周学习总结

    教材学习内容总结

    • 了解异常及其种类
    • 理解进程和并发的概念
    • 掌握进程创建和控制的系统调用及函数使用:fork,exec,wait,waitpid,exit,getpid,getppid,sleep,pause,setenv,unsetenv,
    • 理解数组指针、指针数组、函数指针、指针函数的区别
    • 理解信号机制:kill,alarm,signal,sigaction
    • 掌握管道和I/O重定向:pipe, dup, dup2

    教材学习中的问题和解决过程


    pipe创建一个单向数据通道, 可用于用于进程间通信。 数组 pipefd 用于返回两个引用管道两端的文件描述符。


    dup通过系统调用将创建文件描述符 oldfd 的副本,使用新描述符的最低编号的未使用描述符。

    dup2通过 系统调用执行相同的任务 (), 而不是使用最低编号的未使用的文件描述符, 它使用 descrip‐newfd 中指定的 tor 编号。 如果描述符 newfd 以前打开, 在被重用之前, 它是静默关闭的。

    代码调试中的问题和解决过程

    • 问题1:
    • 问题1解决方案:

    Mybush的编写及实现

    • 题目要求

    使用fork,exec,wait实现mybash
    写出伪代码,产品代码和测试代码
    发表知识理解,实现过程和问题解决的博客(包含代码托管链接)

    • 题目背景

    已知fork函数用于产生一个与父进程完全相同的子进程。

    调用man execupman wait查看相关函数信息

    exec () 函数系列用于将当前进程映像替换为新的进程映像,因此可以在子进程中用于执行命令行


    所有这些系统调用都用于等待调用进程的子级中的状态更改, 并获取有关其状态已更改的子级的信息.

    mybash需要实现,用户输入命令行字符串,

    mybash创建一个新的子程序,用以执行用户命令,

    父进程中等待子进程命令执行完毕,

    循环直至退出。

    • 伪代码
    do{
    
    输入命令行字符串;
    
    产生子进程;
    
    执行命令行;
    
    等待执行结束;
    
    }while(true);
    
    • Mybush源代码
    ……
    int main(){
    
        pid_t pid;
    
        char comline[NUM];
        char *argv[NUM];
    
        do{
    
        printf("Mybash:~$ ");
    
        fgets(comline,NUM,stdin);/*输入命令行字符串*/
    
        parseline(comline,argv);/*格式转换*/
    
        pid = fork();/*产生新的子程序*/
    
        if(pid == 0){/*在子程序中执行命令*/
        
           execvp(argv[0],argv);   /*执行命令行*/
    
        }
    
        waitpid(pid,NULL,0);/*等待子进程终止*/
     
        }while(1);
    
        return 0;
    }
    ……
    
    • 测试运行截图

    代码托管

    结对及互评

    本周结对学习情况

    - [20155216](博客链接)
    - 结对照片
    - 结对学习内容
    

    其他(感悟、思考等,可选)

    参考资料

  • 相关阅读:
    次小生成树模板(poj1679)
    ISAP模板
    ZOJ3781
    Uva12663
    LightOJ1089
    网络流DINIC模板
    FZU2030(括号匹配)
    NOIP2011提高组(选择客栈)
    DRF之视图家族
    DRF多表设计与ModelSerializer组件
  • 原文地址:https://www.cnblogs.com/besti155214/p/7751312.html
Copyright © 2011-2022 走看看