linux中open参数的含义是什么
linux中open参数的含义是什么
本篇内容介绍了“linux中open参数的含义是什么”的有关知识,在实际案例的操作过程中,不少人都会遇到这样的困境,接下来就让小编带领大家学习一下如何处理这些情况吧!希望大家仔细阅读,能够学有所成!
open函数是linux 文件I/O读取的常用函数,open函数的返回值:如果打开文件失败返回-1,否则返回一个大于0的值,表示文件描述符号(内核用它来读取文件)。
open函数的定义和参数
我们首先来看下open函数在Linux下的定义
#include #include #include int open(const char *pathname, int flags); int open(const char *pathname, int flags, mode_t mode);
头文件
如上所示,我们在使用open函数时候需要添加的头文件是
#include //这里提供类型pid_t和size_t的定义#include #include
返回值
open函数的返回值如果操作成功,它将返回一个文件描述符,如果操作失败,它将返回-1。
参数含义:
1、pathname:
在open函数中第一个参数pathname是指向想要打开的文件路径名,或者文件名。我们需要注意的是,这个路径名是绝对路径名。文件名则是在当前路径下的。
2、flags:
flags参数表示打开文件所采用的操作,我们需要注意的是:必须指定以下三个常量的一种,且只允许指定一个
-
O_RDONLY:只读模式 -
O_WRONLY:只写模式 -
O_RDWR:可读可写
以下的常量是选用的,这些选项是用来和上面的必选项进行按位或起来作为flags参数。
-
O_APPEND 表示追加,如果原来文件里面有内容,则这次写入会写在文件的最末尾。 -
O_CREAT 表示如果指定文件不存在,则创建这个文件 -
O_EXCL 表示如果要创建的文件已存在,则出错,同时返回 -1,并且修改 errno 的值。 -
O_TRUNC 表示截断,如果文件存在,并且以只写、读写方式打开,则将其长度截断为0。 -
O_NOCTTY 如果路径名指向终端设备,不要把这个设备用作控制终端。 -
O_NONBLOCK 如果路径名指向 FIFO/块文件/字符文件,则把文件的打开和后继 I/O设置为非阻塞模式(nonblocking mode)
以下三个常量同样是选用的,它们用于同步输入输出
-
O_DSYNC 等待物理 I/O 结束后再 write。在不影响读取新写入的数据的前提下,不等待文件属性更新。 -
O_RSYNC read 等待所有写入同一区域的写操作完成后再进行 -
O_SYNC 等待物理 I/O 结束后再 write,包括更新文件属性的 I/O
3、mode:
mode参数表示设置文件访问权限的初始值,和用户掩码umask有关,比如0644表示-rw-r–r–,也可以用S_IRUSR、S_IWUSR等宏定义按位或起来表示,详见open(2)的Man Page。要注意的是,有以下几点
-
文件权限由open的mode参数和当前进程的umask掩码共同决定。 -
第三个参数是在第二个参数中有O_CREAT时才作用,如果没有,则第三个参数可以忽略
open函数与fopen函数区别
从来源来分,这两者很好区分:
open函数是Unix下系统调用函数,操作成功返回的是文件描述符,操作失败返回的是-1,
fopen是ANSIC标准中C语言库函数,所以在不同的系统中调用不同的内核的API,返回的是一个指向文件结构的指针。
同时open函数没有缓冲,fopen函数有缓冲,open函数一般和write配合使用,fopen函数一般和fwrite配合使用。
“linux中open参数的含义是什么”的内容就介绍到这里了,感谢大家的阅读。如果想了解更多行业相关的知识可以关注高防服务器网网站,小编将为大家输出更多高质量的实用文章!
[微信提示:高防服务器能助您降低 IT 成本,提升运维效率,使您更专注于核心业务创新。
[图文来源于网络,不代表本站立场,如有侵权,请联系高防服务器网删除]
[