zoukankan      html  css  js  c++  java
  • open/write/read

    C语言中open函数

    作用:打开和创建文件。
    简述:
    1
    2
    3
    4
    #include <fcntl.h>
    int open(const char *pathname, int flags);
    int open(const char *pathname, int flags, mode_t mode);
    返回值:成功则返回文件描述符,否则返回 -1
    对于open函数来说,第三个参数仅当创建新文件时(即 使用了O_CREAT 时)才使用,用于指定文件的访问权限位(access permission bits)。pathname 是待打开/创建文件的POSIX路径名(如/home/user/a.cpp);flags 用于指定文件的打开/创建模式,这个参数可由以下常量(定义于fcntl.h)通过逻辑位或逻辑构成。
    1
    2
    3
    O_RDONLY 只读模式
    O_WRONLY 只写模式
    O_RDWR 读写模式
    打开/创建文件时,至少得使用上述三个常量中的一个。以下常量是选用的:
    1
    2
    3
    4
    5
    6
    O_APPEND 每次写操作都写入文件的末尾
    O_CREAT 如果指定文件不存在,则创建这个文件
    O_EXCL 如果要创建的文件已存在,则返回 -1,并且修改 errno 的值
    O_TRUNC 如果文件存在,并且以只写/读写方式打开,则清空文件全部内容(即将其长度截短为0)
    O_NOCTTY 如果路径名指向终端设备,不要把这个设备用作控制终端。
    O_NONBLOCK 如果路径名指向 FIFO/块文件/字符文件,则把文件的打开和后继 I/O
    设置为非阻塞模式
    1
    (nonblocking mode)
    以下三个常量同样是选用的,它们用于同步输入输出
    1
    O_DSYNC 等待物理 I/O 结束后再 write。在不影响读取新写入的数据的
    前提下,不等待文件属性更新。
    1
    2
    O_RSYNCread等待所有写入同一区域的写操作完成后再进行
    O_SYNC 等待物理 I/O 结束后再write,包括更新文件属性的 I/O
    open返回的文件描述符一定是最小的未被使用的描述符。
    如果 NAME_MAX(文件名最大长度,不包括'')是 14,而我们想在当前目录下创建文件名长度超过 14 字节的文件,早期的 System V 系统(如 SVR2)会截断超出部分,只保留前 14 个字节;而由 BSD 衍生的(BSD-derived)系统会返回错误信息,并且把 errno 置为 ENAMETOOLONG。
    POSIX.1 引入常量 _POSIX_NO_TRUNC 用于决定是否截断长文件名/长路径名。如果_POSIX_NO_TRUNC 设定为禁止截断,并且路径名长度超过 PATH_MAX(包括 ''),或者组成路径名的任意文件名长度超过 NAME_MAX,则返回错误信息,并且把 errno 置为 ENAMETOOLONG。
  • 相关阅读:
    ExecuteScalar requires the command to have a transaction when the connection assigned to the command is in a pending
    如何从vss中分离程序
    String or binary data would be truncated
    the pop3 service failed to retrieve authentication type and cannot continue
    The POP3 service failed to start because
    IIS Error he system cannot find the file specified _找不到页面
    pku2575Jolly Jumpers
    pku2940Wine Trading in Gergovia
    pku3219二项式系数
    pku1029false coin
  • 原文地址:https://www.cnblogs.com/johnnyflute/p/3522167.html
Copyright © 2011-2022 走看看