zoukankan      html  css  js  c++  java
  • 第7课-系统调用方式文件编程

    一.核心理论:文件描述符
    (1)成年公民有身份证编号
    (2)打开的文件对应文件描述符。
    (3)实质就是一串数字。
    (4)作用就是能够区分所有打开的文件。
    二.函数学习
    man命令默认是按照Linux系统内置手册顺序查找你要搜索的关键词,一旦找到就不继续查找了。相应的顺序是1命令,2系统调用,3库函数。
    2.1 打开文件
    2.1.1 函数名
    Open
    2.1.2 函数原形
    (1)int open(const char* pathname,int flags);
    (2)int open(const char* pathname,int flags.mode_t mode);
    2.1.3 函数功能
    打开或者创建一个文件
    2.1.4 所属头文件
    <sys/types.h>
    <sys/stat.h>
    <fcntl.h>
    2.1.5 返回值
    成功 返回文件描述符
    失败 返回-1
    2.1.6 参数说明
    Pathname:要打开的文件名(含路径)
    Flags:文件打开以后的权限
    (1)必须包含以下三者之一
    O_RDONLY,O_WRONLY,O_RDWR
    (2)可以外加包含以下选项
    O_APPEND,O_CREAT
    如果使用O_CREAT选项,则必须使用第三个参数mode。默认是不创建不存在的文件的。默认是覆盖之前存在的文件内容的,所以要指明是否以追加方式打开。
    Mode:文件待创建文件的访问权限,前提是要在flags参数里面包含了o_creat标志。格式是:文件所有者 + 文件同组用户 + 其他用户。前面多一个0表示粘连位。
    2.2 创建文件
    2.1.1 函数名
    Creat
    2.1.2 函数原形
    int creat(const char *pathname, mode_t mode);
    2.1.3 函数功能
    创建一个文件并且以只写的方式打开它。
    如果已经存在则不创建。
    2.1.4 所属头文件
    <sys/types.h>
    <sys/stat.h>
    <fcntl.h>
    2.1.5 返回值
    成功 返回文件描述符
    失败 返回-1
    2.1.6 参数说明
    Pathname:创建的文件名(含路径)
    Mode:创建的文件爱你的读写权限
    2.3 关闭文件
    2.3.1 函数名
    Close
    2.3.2 函数原形
    Int close(int fd);
    2.3.3 函数功能
    关闭一个打开的文件
    2.3.4 所属头文件
    <unistd.h>
    2.3.5 返回值
    成功:0
    失败:-1
    2.3.6 参数说明
    Fd:要关闭的文件的文件描述符。
    2.4 读文件
    2.4.1 函数名
    read
    2.4.2 函数原形
    ssize_t read(int fd, void *buf, size_t count);
    2.4.3 函数功能
    从打开的文件中读取指定大小的数据到指定的内存位置。
    2.4.4 所属头文件
    <unistd.h
    2.4.5 返回值
    成功:返回读取的字节数
    失败:返回-1
    2.4.6 参数说明
    Fd:已经打开且要从该文件读取数据的文件描述符
    Buf:存放读取到的数据的起始位置
    Count:想要读取的字节数
    2.5 写文件
    2.5.1 函数名
    Write
    2.5.2 函数原形
    ssize_t write(int fd, const void *buf, size_t count);
    2.5.3 函数功能
    向已经打开的文件写入预先指定的数据
    2.5.4 所属头文件
    <unistd.h>
    2.5.5 返回值
    成功:返回成功写入的字节数
    失败:-1
    2.5.6 参数说明
    Fd:已经打开且要向该文件写入数据的文件描述符
    Buf:要写入的数据存放的起始位置
    Count:想要写入的字节数
    文件操作中有隐形的文件读写指针,打开文件的时候,默认是指向文件头,在写入数据到该打开的文件后,文件读写指针指向了文件尾,当文件还未关闭,就继续读取数据的话,只能读到空数据,因为读和写都是按照文件指针的位置进行的。
    2.6 定位文件
    2.6.1 函数名
    Lseek
    2.6.2 函数原形
    off_t lseek(int fd, off_t offset, int whence);
    2.6.3 函数功能
    将文件读写指针移动到指定位置
    2.6.4 所属头文件
    <sys/types.h>
    <unistd.h>
    2.6.5 返回值
    成功:返回文件读写指针距离文件头的位置(字节数)
    失败:-1
    2.6.6 参数说明
    fd:要移动指针的文件
    Offset:移动的距离(字节数)
    Whence:决定指针以什么位置为基准开始移动
    SEEK_SET:以文件头为基准,此时的offset只能是整数
    SEEK_CUR: 以当前位置为基准,此时的offset可正可负,正数往后移动,负数往前移动。
    SEEK_END:以文件尾为基准移动,此时的offset之能是负数。
    2.7 复制文件描述符
    2.7.1 函数名
    Dup
    2.7.2 函数原形
    int dup(int oldfd);
    2.7.3 函数功能
    复制一个已存在的文件描述符,但是和老描述符指向同一文件。
    2.7.4 所属头文件
    <unistd.h>
    2.7.5 返回值
    成功:返回新的文件描述符
    失败:-1
    2.7.6 参数说明
    Oldfd:要复制的老的文件描述符。
    三.复制文件实例

  • 相关阅读:
    转载:iOS开发的22个奇谲巧技
    解决pathForResource返回nil, 无法读取plist文件问题
    小项目三:登陆窗口
    小项目一: UIButton的使用
    转载:iOS 8 自适应 Cell
    转载:iOS 8 AutoLayout与Size Class自悟
    转载:总结iOS 8和Xcode 6的各种坑
    [转]Xcode6中如何添加pch文件
    UIButton和UIImageView的区别
    控件的属性
  • 原文地址:https://www.cnblogs.com/YanfeiHao/p/4432997.html
Copyright © 2011-2022 走看看