• 文件IO_open(),read(),write(),lseek(),close()


    open()、read()、write()、lseek()和close()。这5个函数的特点是不带缓存,直接对文件(包括设备)进行读写操作。这些函数虽然不是ANSI C 的组成部分,但是是POSIX的组成部分。

    基本文件操作

    1. 函数说明

      open() 函数用于打开或创建文件,在打开或创建文件是可以指定文件的属性及用户的权限等各种参数。

      close() 函数用于关闭一个被打开的文件。当一个进程终止时,所有被它打开的文件都由内核自动关闭,很多程序都使用这一功能而不显示地关闭一个文件。

      read() 函数用于将从指定的文件描述符中读取的数据放到缓存区中,并返回实际读入的字节数。若返回0,则表示没有数据可读,即已达到文件尾。读操作从当前指针位置开始。当从终端设备文件中读出数据时,通常一次最多读一行。

      write() 函数用于向打开的文件写数据,写操作从文件的当前指针位置开始。对磁盘文件进行写操作,若磁盘文件已满或超出该文件的长度,则write()函数返回失败。

      lseek() 函数用于在指定的文件描述符中将指针定位到响应的位置。它只能用在可定位(可随机访问)的文件中。管道、套接字和大部分的字符设备文件是不可定位的,所以在这些文件的操作中无法使用lseek()调用。

    2. 函数格式

    open()函数

    int open(const char *pathname, int flags, mode_t mode);

    所需头文件

    #include <sys/types.h>
    #include <sys/stat.h>
    #include <fcntl.h>
    open()所需头文件

    参数:

      pathname:被打开的文件名(可包含路径名)。

      flags:文件打开的方式。

    O_RDONLY:以只读方式打开文件。
    
    O_WRONLY: 以只写方式打开文件。
    
    O_RDWR:以读写方式打开文件。
    
    O_CREAT:如果该文件不存在,就创建一个新的文件,并用第三个参数为其设置权限。
    
    O_EXECL:如果使用O_CREAT时文件存在,则可返回错误消息。这一参数可测试文件是否存在。此时open是原子操作,防止多个进程同时创建同一个文件。
    
    O_NOCTTY:使用本参数是,如果文件为终端,那么该终端不会成为调用open()的那个进程的控制终端。
    
    O_TRUNC:若文件已经存在,那么会删除文件中的全部原有数据,并且设置文件大小为0。
    
    O_APPEND:以添加方式打开文件,在打开文件的同时,文件指针指向文件尾,即将写入的数据添加到文件尾。
    flag参数

      mode:被打开文件的存取权限。

    被打开文件的存取权限
    
    可以用一组宏定义:S_I(R/W/X)(USR/GRP/OTH)
    其中 R/W/X 分别表示 读/写/执行 权限
    USR/GRP/OTH 分别表示 文件所有者/文件所属组/其他用户
    
    例如,S_IRUSR|S_IWUSR 表示设置文件所有者的可读可写属性。八进制表示法中600也表示同样的权限。
    被打开文件的存取权限

    返回值:

      成功:返回文件描述符。

      失败:-1。

  • 相关阅读:
    解决-bash: fork: retry: Resource temporarily unavailable错误
    Python虚拟环境--virtualenv
    Docker三大核心概念之镜像
    LRU cache 实现
    二叉树常见算法总结和C++实现
    跳表原理及C++实现
    结构笔记—串的基本操作及串的模式匹配算法
    Bloom Filter布隆过滤器原理和实现(2)
    Bloom Filter布隆过滤器原理和实现(1)
    bitmap位图原理和实现
  • 原文地址:https://www.cnblogs.com/doitjust/p/11062685.html
Copyright © 2020-2023  润新知