• 20145334 《信息安全系统设计基础》第10周学习总结


    open函数:打开一个已存在的文件或者创建一个新文件

    #include <sys/types.h>
        #include <sys/stat.h>
        #include <fcntl.h>
    
        int open(char *filename,int flags,mode_t mode);
    

    open函数将filename转换为一个文件描述符,并且返回描述符数字。
    返回的描述符总是在进程中当前没有打开的最小描述符。

    O_ RDONLY :只读 
    O_ WRONLY :只写 
    O_ RDWR :可读可写
    

    flag参数可以是一个或多个更多位掩码

    O_ CREAT:如果文件不存在,就创建它的一个截断的空文件
    O_ TRUNC:如果文件已经存在,就截断它 
    O_ APPEND:在每次写操作前,设置文件位置到文件的结尾处
    

    应用程序是通过分别调用read和write函数来执行输入和输出的

    #include <unistd.h>
    ssize_t read(int fd,void *buf,size_t n);
    ssize_t write(int fd,const void *buf,size_t n);
    

    用RIO包健壮地读写
    RIO包的实质:I/O包

    RIO包提供的两种函数:

    无缓冲的输入输出函数、带缓冲的输入函数(线程安全)
    应用程序通过调用rioreadn和riowritten函数可以在存储器和文件之间直接传送数据

    #include "csapp.h"
    ssize_t rio_readn(int fd,void *usrbuf,size_t n);
    ssize_t rio_writen(int fd,void *usrbuf,size_t n);
    

    读取文件元数据
    检索文件信息(元数据):应用程序能够通过调用stat和fstat函数

    #include <unistd.h>
    #include <sys/stat.h>
    int stat(const char *filename,struct stat *buf);
    int fstat(int fd,struct stat *buf);
    

    stat函数以一个文件名作为输入,填写一个stat数据结构中的各个成员。
    fstat函数以文件描述符而不是文件名作为输入。
    st_ size成员包含了文件的字节数大小。
    st_ mode成员则编码了文件访问许可位和文件类型。
    文件类型包括:
    普通文件:某种类型的二进制或文本数据。
    目录文件:关于其他文件的信息。
    套接字:一种用来通过网络与其他进程通信的文件。

    宏指令:根据st_mode成员来确定文件的类型
    在sys/stat.h中定义:

    S_ ISREG():这是一个普通文件吗? 
    S_ ISDIR():这是一个目录文件吗? 
    S_ ISSOCK():这是一个网络套接字吗?
    

    Unix外壳提供了I/O重定向操作符,允许用户将磁盘文件和标准输入输出联系起来。

    unix> ls > foo.txt

    标准I/O
    标准I/O库将一个打开的文件模型化为一个流,一个流就是一个指向FILE类型的结构的指针。每个ANSIC程序开始都有三个打开的流stdin、stdout和stderr,分别对应于标准输入、标准输出、标准错误。

    #include <stdio.h>
    extern FILE *stdin;
    extern FILE *stdout;
    extern FILE *stderr;
    







  • 相关阅读:
    Android和PHP开发最佳实践
    python3+pyqt5 +eric5安装配置
    用Python为iOS和Android写跨平台的应用
    No compatible targets were found Do you wish to a add new Android Virtual Device ?
    doc命令大全(详细版)
    安装Qt5.9
    ADT Bundle下载和安装
    阶段性学习内容
    DDMS files not found
    五步搞定Android开发环境部署——非常详细的Android开发环境搭建教程
  • 原文地址:https://www.cnblogs.com/bestizwh/p/6070088.html
Copyright © 2020-2023  润新知