zoukankan      html  css  js  c++  java
  • 20145309信息安全系统设计基础第9周学习总结下

    1.打开文件

    应用程序向内核发出请求→要求内核打开相应的文件→内核返回文件描述符

    文件描述符:一个小的非负整数,用来在后续对此文件的所有操作中标识这个文件。有三个已经被指定了的如下:

    标准输入——0(STDIN_FILENO)
    标准输出——1(STDOUT_FILENO)
    标准错误——2(STDERR_FILENO)
    括号中是常量表示形式,使用时需要加头文件<unistd.h>

    也就是说,在Unix生命周期一开始,0、1、2就被占用,以后的open只能从3开始——习题10.1.

    在UNIX下还有stdin,stdout,stderr表示同样的含义。

    二者的主要区别为:

    1.数据类型不同,前者为int类型,后者为FILE*;

    2.STDIN_FILENO主要用在read(),write()等中,后者主要用在fread(),fwrite()以f开头。

    2.改变当前的文件位置

    通常,读,写操作都从当前文件偏移量处开始(也就是文件位置),并使偏移量增加所读写的字节数,可以理解为光标所在的位置。

    当打开一个文件的最初时候文件的偏移量为0.

    通过seek操作,可以显示的设置文件的当前位置为k。

    3.读写文件

    (1)读

    读操作就是从文件拷贝n>0个字节到存储器,并且改变文件当前位置。(如果当前位置是k,则改变为k+n)
    对于给定的m字节的文件,若k>=m时会出发一个EOF条件

    • EOF的来源:
      这里有一个一直以来的理解上的误区:文件结尾处没有明确的EOF信号,是当文件当前位置的数值超过了文件大小时,会处罚一个称为end-of-file的条件,能够被应用程序检测到,这就是所谓的EOF信号。

    (2)写

    写操作是从存储器拷贝n>0个字节到一个文件,然后更新当前文件位置。

    4.关闭文件

    1)当应用完成访问文件之后,通知内核关闭这个文件
    2)内核释放文件打开时创建的数据结构,并将描述符恢复

    .2打开和关闭文件

    1.open函数

    • (1)函数定义:
    #include <sys/types.h>
    #include <sys/stat.h>
    #include <fcntl.h>
    
    int open(char *filename, int flags, mode_t mode);
    • (2)参数解析:

    • 返回值:类型为int型,返回的是描述符数字,总是在进程中当前没有打开的最小描述符。如果出错,返回值为-1。
    • filename:文件名
    • flags:指明进程打算如何访问这个文件,可以取的值见下:

        O_RDONLY:只读
        O_WRONLY:只写
        O_RDWR:可读可写
        O_CREAT:文件不存在,就创建新文件
        O_TRUNC:如果文件存在,就截断它
        O_APPEND:写操作前设置文件位置到结尾处
        这些值可以用“或”连接起来。

    3读和写文件
    • 1.读 read

    (1)函数原型:

    #include <unistd.h>
    
    ssize_t read(int fd, void *buf, size_t n);//返回有符号值

    (2)参数解析:

    返回值:成功则返回读的字节数,EOF返回0,出错返回-1。返回值为有符号数。
    fd:文件描述符
    buf:存储器位置
    n:最多从当前文件位置拷贝n个字节到存储器位置buf

    https://git.oschina.net/69M/LH20145309_Linux.git
  • 相关阅读:
    开启JAVA学习之旅 Day1
    python二分法及小tips
    简单的注入脚本
    Requests文档 阅读笔记
    多线程
    IO操作
    异常Exception
    Map集合
    Collection集合
    泛型
  • 原文地址:https://www.cnblogs.com/zym0728/p/6059847.html
Copyright © 2011-2022 走看看