c/c++ 学习-open 函数

c/c++ 学习-open 函数转自:http://blog.csdn.net/dong_007_007/article/details/16269021open函数用于打开和创建文件。以下是open函数的简单描述      #include       intopen(constchar*pathname,intoflag,…/*mode_tmode*/);   

大家好,又见面了,我是你们的朋友全栈君。

转自:http://blog.csdn.net/dong_007_007/article/details/16269021

open 函数用于打开和创建文件。以下是 open 函数的简单描述
        #include 
        int open(const char *pathname, int oflag, … /* mode_t mode */);
                    返回值:成功则返回文件描述符,否则返回 -1
对于 open 函数来说,第三个参数(…)仅当创建新文件时才使用,用于指定文件的访问权限位(access permission bits)。pathname 是待打开/创建文件的路径名(如 C:/cpp/a.cpp);oflag 用于指定文件的打开/创建模式,这个参数可由以下常量(定义于 fcntl.h)通过逻辑或构成。
        O_RDONLY      只读模式 
        O_WRONLY      只写模式 
        O_RDWR        读写模式

打开/创建文件时,至少得使用上述三个常量中的一个。以下常量是选用的:
        O_APPEND       每次写操作都写入文件的末尾 
        O_CREAT        如果指定文件不存在,则创建这个文件 
        O_EXCL         如果要创建的文件已存在,则返回 -1,并且修改 errno 的值
        O_TRUNC        如果文件存在,并且以只写/读写方式打开,则清空文件全部内容 
        O_NOCTTY       如果路径名指向终端设备,不要把这个设备用作控制终端。
        O_NONBLOCK     如果路径名指向 FIFO/块文件/字符文件,则把文件的打开和后继 I/O
                       设置为非阻塞模式(nonblocking mode)
以下三个常量同样是选用的,它们用于同步输入输出
        O_DSYNC        等待物理 I/O 结束后再 write。在不影响读取新写入的数据的
                       前提下,不等待文件属性更新。 
        O_RSYNC        read 等待所有写入同一区域的写操作完成后再进行
        O_SYNC         等待物理 I/O 结束后再 write,包括更新文件属性的 I/O
open 返回的文件描述符一定是最小的未被使用的描述符。
    如果 NAME_MAX(文件名最大长度,不包括’\0’)是 14,而我们想在当前目录下创建文件名长度超过 14
字节的文件,早期的 System V 系统(如 SVR2)会截断超出部分,只保留前 14 个字节;而由 BSD
衍生的(BSD-derived)系统会返回错误信息,并且把 errno 置为 ENAMETOOLONG。
    POSIX.1 引入常量 _POSIX_NO_TRUNC 用于决定是否截断长文件名/长路径名。如果_POSIX_NO_TRUNC 设定为禁止截断,并且路径名长度超过 PATH_MAX(包括 ‘\0’),或者组成路径名的任意文件名长度超过 NAME_MAX,则返回错误信息,并且把 errno 置为 ENAMETOOLONG。

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请联系我们举报,一经查实,本站将立刻删除。

发布者:全栈程序员-站长,转载请注明出处:https://javaforall.net/142948.html原文链接:https://javaforall.net

(0)
全栈程序员-站长的头像全栈程序员-站长


相关推荐

  • docker pull image 打tag

    docker pull image 打tag

    2021年5月14日
    139
  • 操作系统作业之银行家算法(c语言实现)

    操作系统作业之银行家算法(c语言实现)银行家算法分析:银行家算法数据结构:进程数processNum资源类数resourceNum系统剩余可利用资源Available,为一个含有m个元素的数组;最大需求矩阵Max,为一个processNumresourceNum数组进程当前已分配资源数Allocation,为一个processNumresourceNum数组进程尚需要的资源数Need,为一个processNum*re…

    2022年7月22日
    13
  • cloudsim仿真平台扩展的例子_云编程

    cloudsim仿真平台扩展的例子_云编程CloudSim3.0.3的网络编程详解—以*org.cloudbus.cloudsim.examples.network.NetworkExample1为例

    2022年10月12日
    2
  • 如何实现自定义类加载器_进阶课程

    如何实现自定义类加载器_进阶课程新建一个java文件,保存在相应的目录用cmd命令进入到world类的上级目录,运行javac命令,生成.class文件创建自己定义的classload类//继承ClassLoader类,重写findclass方法。publicclassMyClassloaderextendsClassLoader{privateStringpath;privateStringclassloaderName;publicMyClassloader(Str

    2025年9月22日
    6
  • 数组的前缀和及查分数组

    数组的前缀和及查分数组1,前缀和主要适用场景是原始数组不会被修改的情况下,频繁查询某个区间的累加和。这里就不写前缀和的代码了,就是用一个数组记录下原有数组的前缀和。比如,prefix[i]就代表着nums[0…i-1]所有元素的累加和,如果我们想求区间nums[i…j]的累加和,只要计算prefix[j+1]-prefix[i]即可,而不需要遍历整个区间求和。(需要注意的是使用场景是频繁查询某个区间的累加和,而不需要对原始数组进行频繁修改)2,查分数组的主要适用场景是**频繁对原始数组的某个区间的元素进行增减。**比

    2022年6月11日
    45
  • Java JDK 下载安装,以及环境配置

    Java JDK 下载安装,以及环境配置一、JavaJDK下载1)登录oracle官网2)选择Menu\Java\JavaSE3)向下滚动页面,找到GetStarted\DownloadJavaSEforDevelopers4)点击JDK下载5)同意协议AcceptLicenseAgreement\下载对应JDK版本,我的是Windows系统,所以选择Windowsjdk-9.0.4最新版本二、…

    2022年7月7日
    21

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

关注全栈程序员社区公众号