• 2018-2019-1 20165219 《信息安全系统设计基础》第七周学习总结


    2018-2019-1 20165219 《信息安全系统设计基础》第七周学习总结

    教材学习内容总结

    异常:是控制流中的突变,一部分由硬件实现,一部分由操作系统实现,用来响应处理器状态中的某些变化。

    异常的类别:

    中断:是一步发生的,是来自处理器外部的I/O设备的信号的结果。

    陷阱:是有意的异常,是执行一条指令的结果。

    故障:由错误情况引起,可以被故障处理程修正。

    终止:是不可修复的致命错误导致的。

    系统中的每个程序都运行在某个进程的上下文中

    父进程通过调用fork函数来创建一个新的运行的子进程

    fork函数调用一次返回两次。一次是返回到父进程,另一次是返回到新创建的子进程,父进程和子进程是并发执行的。

    几个抽象:

    逻辑控制流:提供一个假象,好像我们的程序独占地使用处理器

    私有的地址空间:提供一个假象,好像我们的程序独占地使用内存系统

    进程控制:

    回收子进程

    当一个进程由于某种原因终止时,进程被保持在一种已终止的状态中,直到被它的父进程回收。

    一个进程调用waitpid函数等待它的子进程终止或停止

    `#include <sys/types.h>

    include <wait.h>

    pid_t waitpid(pid_t pid,int *statusp,int options);`

    运行程序

    execve函数在当前进程的上下文中加载并运行一个新程序

    课上测试补做

    实现ls

    打开目录文件

    针对目录文件

    读取目录条目

    显示文件名

    关闭文件目录文件

    #include        <stdio.h>
    #include        <sys/types.h>
    #include        <dirent.h>
    
    void do_ls(char []);
    
    int main(int argc, char *argv[])
    {
            if ( argc == 1 )
                    do_ls( "." );
            else
                    while ( --argc ){
                            printf("%s:
    ", *++argv );
                            do_ls( *argv );
                    }
    
            return 0;
    }
    
    void do_ls( char dirname[] )
    {
            DIR             *dir_ptr;
            struct dirent   *direntp;
    
            if ( ( dir_ptr = opendir( dirname ) ) == NULL )
                    fprintf(stderr,"ls1: cannot open %s
    ", dirname);
            else
            {
                    while ( ( direntp = readdir( dir_ptr ) ) != NULL )
                            printf("%s
    ", direntp->d_name );
                    closedir(dir_ptr);
            }
    }
    ~           
    
    

  • 相关阅读:
    简单的JAVAWeb选课系统
    公文流转系统001
    第九周动手动脑
    JAVA文件操作
    动手动脑-异常处理
    个人NABCD
    水王(课堂作业)
    软件学习进度表07
    软件工程学习进度表06
    软件工程个人作业05(二维数组求最大子数组的和)
  • 原文地址:https://www.cnblogs.com/wyb-1998/p/9943424.html
Copyright © 2020-2023  润新知