3.3 文件I/O_open函数

    调用open函数可以打开或创建一个文件:

  • #include <fcntl.h>
  • int open(const char *pathname, int oftag, ...);

    返回值:成功返回文件描述符,出错返回-1

        我们将第三个参数写为...,ISO C用这种方法表明余下参数的数量及其类型根据具体的调用会有所不同。对于open函数而言,仅当创建新文件时才使用第三个参数。

        pathname是要打开或创建文件的名字。

        oflag参数可用来说明此函数的多个选项。用下列一个或多个常量进行“或”运算构成oflag参数(这些常量定义在<fcntl.h>头文件中)。

    • O_RDONLY   只读打开。
    • O_WRONLY  只写打开。
    • O_RDWR      读、写打开。

    在上面三个常量中必须指定一个且只能指定一个。下列常量则是可选择的:

    • O_APPEND    每次写时都追加到文件的尾端。
    • O_CREAT      若此文件不存在,则创建它。使用此选项时,需要第三个参数mode,用其指定该新文件的访问权限位。
    • O_EXCL        如果同时指定了O_CREAT,而文件已经存在,则会出错。用此可以测试一个文件是否存在,如果不存在,则创建此文件,这使测  试可创建两者成为一个原子操作。
    • O_TRUNC     如果此文件存在,而且为只写或读写成功打开,则将其长度截短为0。
    • O_NOCTTY   如果pathname指的是终端设备,则不将该设备分配作为此进程的控制终端。
    • O_NONBLOCK  如果pathname指的是一个FIFO、一个块特殊文件或一个字符特殊文件,则此选项为文件的本次打开操作和后续的I/O操作设置非阻塞模式。

    下面三个标志也是可选的。它们是Single UNIX Specification(以及POSIX.1)中同步输入和输出选项的一部分。

    • O_DSYNC    使每次wriite等待物理I/O操作完成,但是如果写操作并不影响读取刚写入的数据,则不等待文件属性被更新。
    • O_RSYNC    使每一个以文件描述符作为参数的read操作等待,直至任何对文件同一部分进行的未决写操作都完成。
    • O_SYNC      使每次write都等到物理I/O操作完成,包括有write操作引起的文件属性更新所需的I/O。

        由open返回的文件描述符一定是最小的未用描述符数值。例如,一个应用程序可以先关闭标准输出(通常是文件描述符1),然后打开另一个文件,执行打开操作前就能了解到该文件一定会在文件描述符1上打开。

     

    文件名和路径名截短
    • 0
      点赞
    • 0
      收藏
      觉得还不错? 一键收藏
    • 0
      评论
    评论
    添加红包

    请填写红包祝福语或标题

    红包个数最小为10个

    红包金额最低5元

    当前余额3.43前往充值 >
    需支付:10.00
    成就一亿技术人!
    领取后你会自动成为博主和红包主的粉丝 规则
    hope_wisdom
    发出的红包
    实付
    使用余额支付
    点击重新获取
    扫码支付
    钱包余额 0

    抵扣说明:

    1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
    2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

    余额充值