• 文件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。

  • 相关阅读:
    LINUX VNC配置[转]
    win7下,两台笔记本内置的无线局域网卡共享上网
    修改Linux和aix系统为北京时区
    ubuntu 9.10 下安装ORACLE 出错SP20750: You may need to set ORACLE_HOME to your Oracle software directory
    安装vim7.1
    select 语句的处理顺序
    批量从数据库是提取数据,并显示出来。
    输入四个字符串然后按大到后输出。
    shell 批量修改指定的文件。
    unix自动登录Telnet,实现查看多台服务器硬盘及数据表空间使用情况
  • 原文地址:https://www.cnblogs.com/doitjust/p/11062685.html
Copyright © 2020-2023  润新知