c语言中的openf函数 c语言 open函数( 二 )


参考资料来源:fopen-百度百科
C语言中open函数如何使用使用C语言中open函数
作用:打开和创建文件 。
简述:
1
2
3
4
#includefcntl.h
intopen(constchar*pathname,intflags);
intopen(constchar*pathname,intflags,mode_tmode);
返回值:成功则返回文件描述符 , 否则返回-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
(nonblockingmode)
以下三个常量同样是选用的,它们用于同步输入输出
1
2
3
4
O_DSYNC等待物理I/O结束后再write 。在不影响读取新写入的数据的
前提下 , 不等待
文件属性
更新 。
1
2
O_RSYNCread等待所有写入同一区域的写操作完成后再进行
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 。
【c语言中的openf函数 c语言 open函数】c语言中的openf函数的介绍就聊到这里吧,感谢你花时间阅读本站内容,更多关于c语言 open函数、c语言中的openf函数的信息别忘了在本站进行查找喔 。

推荐阅读