o_rdonly_O_RDWR, O_CREAT等open函数标志位在哪里定义? | 学步园
查了下O_RDWR, O_CREAT等定義,終于找到了。
我的系統(tǒng)是Fedora12, 其定義在文件:/usr/include/asm-generic/fcntl.h,部分定義如下:
#include
/* open/fcntl - O_SYNC is only implemented on blocks devices and on files
located on an ext2 file system */
#define O_ACCMODE00000003
#define O_RDONLY00000000
#define O_WRONLY00000001
#define O_RDWR00000002
#ifndef O_CREAT
#define O_CREAT00000100/* not fcntl */
#endif
#ifndef O_EXCL
#define O_EXCL00000200/* not fcntl */
#endif
#ifndef O_NOCTTY
#define O_NOCTTY00000400/* not fcntl */
#endif
#ifndef O_TRUNC
#define O_TRUNC00001000/* not fcntl */
#endif
#ifndef O_APPEND
#define O_APPEND00002000
#endif
#ifndef O_NONBLOCK
#define O_NONBLOCK00004000
#endif
#ifndef O_SYNC
#define O_SYNC00010000
#endif
#ifndef FASYNC
#define FASYNC00020000/* fcntl, for BSD compatibility */
#endif
#ifndef O_DIRECT
#define O_DIRECT00040000/* direct disk access hint */
#endif
#ifndef O_LARGEFILE
#define O_LARGEFILE00100000
#endif
#ifndef O_DIRECTORY
#define O_DIRECTORY00200000/* must be a directory */
#endif
#ifndef O_NOFOLLOW
#define O_NOFOLLOW00400000/* don't follow links */
#endif
#ifndef O_NOATIME
#define O_NOATIME01000000
#endif
#ifndef O_CLOEXEC
#define O_CLOEXEC02000000/* set close_on_exec */
#endif
#ifndef O_NDELAY
#define O_NDELAYO_NONBLOCK
#endif
注意:
#define O_RDONLY?? ?00000000
#define O_WRONLY?? ?00000001
#define O_RDWR?? ??? ?00000002
所以:O_RDONLY | O_WRONLY = 1 ,并不等于O_RDWR。
創(chuàng)作挑戰(zhàn)賽新人創(chuàng)作獎勵來咯,堅持創(chuàng)作打卡瓜分現(xiàn)金大獎總結(jié)
以上是生活随笔為你收集整理的o_rdonly_O_RDWR, O_CREAT等open函数标志位在哪里定义? | 学步园的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: CentOs7 安装Hadoop-3.1
- 下一篇: 获取socket对应的接收缓冲区中的可读