File I/O (Linux)

open():open a file

  • function prototype

    // 1、
    int open(const char *pathname, int flags);
    - 功能:打开一个已有文件
    - 参数:pathname为文件路径
           flags为对文件的操作权限 (O_RDONLY, O_WRONLY, O_RDWR)
    - 返回值:成功则返回一个新的文件描述符
        	 失败则返回-1
    
    // 2、
    int open(const char *pathname, int flags, mode_t mode);
    - 功能:创建一个新文件
    - 参数:pathname为文件路径
           flags为对文件的操作权限 (O_RDONLY, O_WRONLY, O_RDWR, O_CREATE)
      	   mode为八进制数,表示创建出新的文件的操作权限,比如:0777
        	最终权限:mode & ~umask,umask的值不同用户不一样,其目的是抹去一些权限
    - 返回值:
        	 成功则返回一个新的文件描述符
        	 失败则返回-1
    

read(): read data

  • function prototype
    ssize_t read(int fd, void *buf, size_t count);
    - 功能:读数据,保存到buf内存中
    - 参数:fd 文件描述符
           buf 读到的数据,存放的地方(传出参数)
           count 数组的大小
    - 返回值:
        	>0 返回读取到的字节数量
        	=0 表示到了文件末尾,文件读取完
        	-1 出现了错误
    

write(): write data

  • function prototype

    ssize_t write(int fd, const void *buf, size_t count);
    - 功能:将数据,写入到buf内存中
    - 参数:fd 文件描述符
           buf 要往磁盘写入的数据
           count 要写的数据的实际的大小
    - 返回值:
        	>0 返回读取到的字节数量
        	-1 出现了错误
    

lseek(): offset to the file pointer

  • function prototype
    off_t lseek(int fd, off_t offset, int whence);
    - 功能:对文件指针进行偏移
    - 参数:fd 文件描述符
           offset 偏移量
           whence 标志
        			SEEK_SET 设置文件指针的偏移量,从文件头开始
        			SEEK_CUR 设置文件指针的偏移量,从当前位置开始
        			SEEK_END 设置文件指针的偏移量,从文件尾开始,可以获取文件长度
    - 返回值:返回文件指针的位置
    - 作用:
        1、移动文件指针到文件头
        2、获取当前文件指针的位置
        3、获取文件长度
        4、拓展文件长度
    

dup(): Duplicate file descriptor

  • function prototype
    int dup(int oldfd);
    - 功能:复制文件描述符
    - 参数:oldfd 旧的文件描述符
    - 返回值:
        	成功:返回一个新的文件描述符(从空闲的文件描述符表中找一个最小的),和就的文件描述符指向同一个文件
        	失败:-1
    

dup2(): Redirect file descriptor

  • function prototype
    int dup2(int oldfd, int newfd);
    - 功能:重定向文件描述符
    - 参数:oldfd 旧的文件描述符
           newfd 新的文件描述符
    - 返回值:
        	成功:返回一个新的文件描述符(和newfd一样),都是指向 oldfd 指向的文件
        	失败:-1
    

fcntl(): operate on file descriptors

  • function prototype

    int fcntl(int fd, int cmd, ...可变参数);
    - 参数:fd 文件描述符
           cmd 表示对文件描述符进行如何操作
           按需添加可变参数
    - cmd 可选:
        		F_DUPFD : 复制文件描述符,复制fd,得到一个新的文件描述符(不需要可变参数)
                F_GETFL : 获取指定的文件描述符的文件状态 flag
                F_SETFL : 设置文件描述符文件状态 flag (需要可变参数)
                    	O_RDONLY、O_WRONLY、O_RDWR、O_APPEND、O_NONBLOCK(非阻塞)
    

Guess you like

Origin blog.csdn.net/Sir666888/article/details/126243784