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)
全栈程序员-站长的头像全栈程序员-站长


相关推荐

  • 浪潮服务器 安装系统_浪潮服务器安装centos7

    浪潮服务器 安装系统_浪潮服务器安装centos7《浪潮服务器系统安装操作》由会员分享,可在线阅读,更多相关《浪潮服务器系统安装操作(3页珍藏版)》请在人人文库网上搜索。1、浪潮服务器系统安装总结一、首先创建虚拟磁盘:1、开机引导项Ctrl+h,在AdapterSelection屏幕中单击Start。2、此时,将打开MegaRaidBIOSConfigUtilityVirtualConfiguration屏幕…

    2022年10月5日
    0
  • java轻量级web框架_什么是框架

    java轻量级web框架_什么是框架JEMSF框架前言今天我们准备向广大开发人员推荐一种新的框架,暂时取名JEMSF,如果您已经对Struts、Tapestry以及Spring和Hibernat有一些了解,那么应该可以更好的理解下面的文章,JEMSF是我在工作生涯中最大的一个创造,经历了很多考验和应用的试验,最后形成JEMSF。序一种新的事物的诞生需要经历很多的考验,我自认为JEMSF是一个很好的WEB应用框架,很久以前(2…

    2022年9月7日
    0
  • jvmxmx和xms参数分析(设定优化校准)

    XmnXmsXmxXss有什么区别Xmn、Xms、Xmx、Xss都是JVM对内存的配置参数,我们可以根据不同需要区修改这些参数,以达到运行程序的最好效果。-Xms堆内存的最小大小,默认为物理内存的1/64-Xmx堆内存的最大大小,默认为物理内存的1/4-Xmn堆内新生代的大小。通过这个值也可以得到老生代的大小:-Xmx减去-Xmn-Xss设置每个线程可使用的内存大小,即…

    2022年4月18日
    44
  • classcastingexception_c++链接错误

    classcastingexception_c++链接错误转载自:http://www.blogjava.net/Sunday/archive/2007/08/18/137860.html现在java编程中经常碰到ClassCastException错误,ClassCastException是JVM在检测到两个类型间的转换不兼容时引发的运行时异常。此类错误通常会终止用户请求。本模式试图为您提供了解和排除ClassCastExcept

    2022年9月9日
    0
  • js array 数组添加与删除数据

    js array 数组添加与删除数据//新建数组varids=newArray();//向数组中添加数据ids.push(1);//删除下标为i的数组元素ids.remove(i);//自定义删除函数:Array.prototype.remove=function(dx){if(isNaN(dx)||dx>this.length){returnfalse;}…

    2022年6月10日
    50
  • SPI接口扫盲 SPI定义/SPI时序(CPHA CPOL)

    SPI接口扫盲 SPI定义/SPI时序(CPHA CPOL)SPI接口扫盲为何要写这篇文档?百度上找出来的SPI接口中文描述都说的太过简略,没有一篇文档能够详尽的将SPI介绍清楚的。wikipedia英文版[注释1]中,SPI接口介绍的很好,但是毕竟是英文版,读起来终究不如母语舒服,所以我结合自己的工作经验,对其进行了汉化、整理。个人SPI接口相关经验:1.参与过国产某芯片SPI接口样品验证、SPI接口服务DEMO开发(C语言)。2.使

    2022年6月18日
    41

发表回复

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

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