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。

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

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

【正版授权,激活自己账号】: Jetbrains全家桶Ide使用,1年售后保障,每天仅需1毛

【官方授权 正版激活】: 官方授权 正版激活 支持Jetbrains家族下所有IDE 使用个人JB账号...

(0)


相关推荐

  • txs0108 替代芯片_什么是芯片,怎么造出来的

    txs0108 替代芯片_什么是芯片,怎么造出来的TXS0108双向电压转换芯片用于IIC时的问题TXS0108是双向电平转换芯片,在我的案例中用于1.8V电平与3.3V电平的转换。最先,我在3.3V和1.8V的SCL和SDA总线上均使用了4.7kΩ的上拉电阻,上拉到对应的高电平。调试发现SDA出现如下波形:可以看到图上出现了次高电平。非常不正常。分析后发现,中间四个次高电平都是IIC芯片发出的ACK信号,应该被拉低,但是并没有拉低到0V。导…

  • android时间控件

    android时间控件前言  这一篇博客分别讲解Android平台下,关于日期和时间的几个相关控件。包括DatePicker(日期选择控件)、TimePicker(时间选择控件)、DatePickerDialog(日期选择对话框)、TimePickerDialog(时间选择对话框)、AnalogClock(模拟时钟控件)、DigitalClock(数字时钟控件)。对于时间控件,无非就是一个展示、修改、获取等操作,下

  • G1垃圾收集器详解

    G1垃圾收集器详解G1垃圾收集器GC收集器的三个考量指标:占用的内存(Capacity)延迟(Latency)吞吐量(Throughput)随着硬件的成本越来越低,机器的内存也越来越大,GC收集器占用的内存基本上可以容忍。而吞吐量可以通过集群(增加机器)来解决。随着JVM中内存的增大,STW的时间成为JVM急迫解决的问题,如果还是按照传统的分代模型,使用传统的垃圾收集器,那么STW的时间将会越来越长。在传统的垃圾收集器中,STW的时间是无法预测的,有没有一种办法,能够首先定义一个停顿时间,然后反向推算收集内

  • not found for libcrypto「建议收藏」

    not found for libcrypto「建议收藏」解决方法sudocp/usr/lib/libcrypto.35.dyliblibcrypto.35.dylib参考:Unabletoconfigureopenssl,libcryptonotfounderrorwithopenssllibraryinstalled

  • java中的输入操作

    java中的输入操作Java中输入一般是通过Scanner类来实现的:具体步骤如下:(1)创建Scanner对象,接受从控制台输入Scannerinput=newScanner(System.in);(2)接受String类型Stringstr=newinput.next();(3)接受int类型intn=input.nextInt();(4)输出结果System.out.println(str);Sys…

  • LoadRunner11的安装与激活成功教程「建议收藏」

    LoadRunner11的安装与激活成功教程「建议收藏」现在很多人都在用LoadRunner11,下面我就来说说自己下载和安装LR11的过程。一、安装1.先来下载LR11.建议大家都在正规网站下载,推荐一个网站http://bbs.51testing.com/thread-423695-1-1.html,直接将此网站复制到迅雷下载http://www.genilogix.com/downloads/loadrunner/loadrunner-11

发表回复

您的电子邮箱地址不会被公开。

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