zoukankan      html  css  js  c++  java
  • Linux open fopen fdopen

    int open(const char *pathname, int flags);
    int open(const char *pathname, int flags, mode_t mode);
    以下三个常量中必选一个:
    O_RDONLY	//只读模式
    O_WRONLY	//只写模式
    O_RDWR	//读写模式
    以下常量选用:
    O_APPEND	//每次写操作都写入文件的末尾
    O_CREAT	//如果指定文件不存在,则创建这个文件
    O_EXCL	//如果要创建的文件已存在,则返回-1,并且修改errno的值
    O_TRUNC	//如果文件存在,并且以只写/读写方式打开,则清空文件全部内容(即将其长度截短为0)
    O_NOCTTY	//如果路径名指向终端设备,不要把这个设备用作控制终端
    O_NONBLOCK	//如果路径名指向FIFO/块文件/字符文件,则把文件的打开和后继I/O
    以下三个常量同样是选用的,它们用于同步输入输出:
    O_DSYNC	//等待物理I/O结束后再write。在不影响读取新写入的数据的前提下,不等待文件属性更新
    O_RSYNC	//read等待所有写入同一区域的写操作完成后再进行
    O_SYNC	//等待物理I/O结束后再write,包括更新文件属性的I/O
    

    open返回的文件描述符一定是最小的未被使用的描述符

    参数mode 组合
    S_IRWXU		//00700权限,代表该文件所有者具有可读、可写及可执行的权限
    S_IRUSR或S_IREAD		//00400权限,代表该文件所有者具有可读取的权限
    S_IWUSR或S_IWRITE	//00200权限,代表该文件所有者具有可写入的权限
    S_IXUSR或S_IEXEC		//00100权限,代表该文件所有者具有可执行的权限
    S_IRWXG		//00070权限,代表该文件用户组具有可读、可写及可执行的权限
    S_IRGRP		//00040权限,代表该文件用户组具有可读的权限
    S_IWGRP		//00020权限,代表该文件用户组具有可写入的权限
    S_IXGRP		//00010权限,代表该文件用户组具有可执行的权限
    S_IRWXO		//00007权限,代表其他用户具有可读、可写及可执行的权限
    S_IROTH		//00004权限,代表其他用户具有可读的权限
    S_IWOTH		//00002权限,代表其他用户具有可写入的权限
    S_IXOTH		//00001权限,代表其他用户具有可执行的权限
    
    creat(const char* pathname, mode_t mode);
    open和creat区别:
    creat()创建文件,总会运行成功
    creat()创建已存在的文件,并不会更改原文件的属性
    

    O_APPEND
    含义是在每次写之前,都将标志位移动到文件的末端

    int fd = open("test.txt", RDWR | O_APPEND);
    lseek(fd, 10, SEEK_SET);
    

    这里lseek是没有用的

    转换

    FILE *fp = fopen("test.txt", "r");
    
    int fd = fileno(fp);
    

    寻找文件流使用的是哪个底层文件描述符。进行底层访问操作(比如想对他调用fstat)

    FILE *fdopen(int fd, const char *mode);
    

    根据文件描述符创建文件流。为一个已经打开的文件描述符提供一个stdio缓冲区

  • 相关阅读:
    html5 canvas 渐变
    html5 canvas 画直线
    html5在canvas中插入图片
    Window文件夹右击菜单定制
    HTML中解决双击会选中文本的问题
    Linux 下修改mysql 字符集编码
    mysqlimport导入命令使用
    PAM 2500 荧光数据导出数据整合脚本
    Resources for Ecology and Evolution
    Plant Ecology Journal Club, 分享主题和文献列表 825, 2019年春
  • 原文地址:https://www.cnblogs.com/zhangxuechao/p/11709938.html
Copyright © 2011-2022 走看看