zoukankan      html  css  js  c++  java
  • 20145220《信息安全系统设计基础》第12周学习总结

    学号20145220《信息安全系统设计基础》第12周学习总结

    教材学习内容总结

    -cp1.c
    功能:复制文件或目录

    include <stdio.h>//标准输入输出

    include <stdlib.h>//C标准函数库

    include <unistd.h>//Unix类系统定义符号常量

    include <fcntl.h>//定义了很多宏和open,fcntl函数原型

    define BUFFERSIZE 4096//定义存储器容量

    define COPYMODE 0644//?

    void oops(char *, char *);

    int main(int argc, char *argv[])
    {
    int in_fd, out_fd, n_chars;//三个描述符值
    char buf[BUFFERSIZE];//存储器位置

    if (argc != 3) {//检查argc的值是否为三,如果不是,返回标准错误
        fprintf(stderr, "usage: %s source destination
    ", *argv);
        exit(1);
    }
    /*检查cp的第一个参数,要复制的文件,用open打开,in_fd为open返回的描述符
    如果返回-1,代表打开失败,提示错误*/
    if ((in_fd = open(argv[1], O_RDONLY)) == -1)
        oops("Cannot open ", argv[1]);
    
    /*检查cp的第二个参数,复制的目的地址,用create在目的地址创建新文件,out_fd为open返回的描述符
    如果返回-1,代表创建失败,提示错误*/
    if ((out_fd = creat(argv[2], COPYMODE)) == -1)
        oops("Cannot creat", argv[2]);
    
    /*cp指令的动作就是读取一个文件的内容到存储器,在新的地址创建空白文件,再从存储器将内容写入新文件。
    这里判断复制是否成功:
    如果能读取顺利,而读取的位数和写的位数不同,是写错误;
    如果读取失败,是读错误。*/
    while ((n_chars = read(in_fd, buf, BUFFERSIZE)) > 0)
        if (write(out_fd, buf, n_chars) != n_chars)
            oops("Write error to ", argv[2]);
    if (n_chars == -1)
        oops("Read error from ", argv[1]);
    
    /*这里执行的是关闭文件的动作,in_fd和out_fd两个文件描述符
    所指向的文件只要有一个关闭错误,就提示关闭错误。*/
    if (close(in_fd) == -1 || close(out_fd) == -1)
        oops("Error closing files", "");
    

    }

    /这个是用来输出错误信息的函数/
    void oops(char *s1, char *s2)
    {
    fprintf(stderr, "Error: %s ", s1);
    perror(s2);//用来将上一个函数发生错误的原因输出到标准设备(stderr)
    exit(1);
    }
    ls1 ls2
    功能 显示当前目录下的所有文件
    ls2前半部分和ls1一样,不同的是多出来了一部分,用来显示文件的详细信息,比如用户名,群组名,大小,创建时间,读写权限等。

    who
    主要思想:从UTMP_FILE文件中读取想要的信息到存储器中,然后再用标准输出函数打印到屏幕上,最后关闭文件。

    include <stdio.h>

    include <stdlib.h>

    include <utmp.h>

    include <fcntl.h>

    include <unistd.h>

    define SHOWHOST

    int show_info( struct utmp *utbufp )
    {
    printf("%-8.8s", utbufp->ut_name);
    printf(" ");
    printf("%-8.8s", utbufp->ut_line);
    printf(" ");
    printf("%10ld", utbufp->ut_time);
    printf(" ");

    ifdef SHOWHOST

    printf("(%s)", utbufp->ut_host);    
    

    endif

    printf("
    ");               
    
    return 0;
    

    }
    int main()
    {
    struct utmp current_record;
    int utmpfd;
    int reclen = sizeof(current_record);

    /打开UTMP_FILE读取信息,如果打开失败则输出失败信息。/
    if ( (utmpfd = open(UTMP_FILE, O_RDONLY)) == -1 ){
    perror( UTMP_FILE );
    exit(1);
    }
    /读取信息到存储器中,reclen就是是读的字节数,然后再调用函数打印出来。/
    while ( read(utmpfd, &current_record, reclen) == reclen )
    show_info(&current_record);
    close(utmpfd);
    return 0;
    }
    fileinfo
    功能 显示文件信息,建立了一个stat数据结构。
    先判断命令是否有操作数,有则继续进行,无报错就打印出来相关文件信息。

    学习进度条

    代码行数(新增/累积) 博客量(新增/累积) 学习时间(新增/累积) 重要成长
    目标 5000行 30篇 400小时
    第一周 200/200 2/2 20/20
    第二周 300/500 2/4 18/38
    第三周 500/1000 3/7 22/60
    第四周 300/1300 2/9 30/90

    参考资料

  • 相关阅读:
    LeetCode OJ String to Integer (atoi) 字符串转数字
    HDU 1005 Number Sequence(AC代码)
    HDU 1004 Let the Balloon Rise(AC代码)
    HDU 1003 Max Sum(AC代码)
    012 Integer to Roman 整数转换成罗马数字
    011 Container With Most Water 盛最多水的容器
    010 Regular Expression Matching 正则表达式匹配
    007 Reverse Integer 旋转整数
    006 ZigZag Conversion
    005 Longest Palindromic Substring 最长回文子串
  • 原文地址:https://www.cnblogs.com/hxf5220/p/6132304.html
Copyright © 2011-2022 走看看