O_RDWR, O_CREAT等open函数标志位在哪里定义?
生活随笔
收集整理的這篇文章主要介紹了
O_RDWR, O_CREAT等open函数标志位在哪里定义?
小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
查了下O_RDWR, O_CREAT等定義,終于找到了。
我的系統是Fedora12, 其定義在文件:/usr/include/asm-generic/fcntl.h,部分定義如下:
#include <linux/types.h>/* open/fcntl - O_SYNC is only implemented on blocks devices and on fileslocated on an ext2 file system */ #define O_ACCMODE 00000003 #define O_RDONLY 00000000 #define O_WRONLY 00000001 #define O_RDWR 00000002 #ifndef O_CREAT #define O_CREAT 00000100 /* not fcntl */ #endif #ifndef O_EXCL #define O_EXCL 00000200 /* not fcntl */ #endif #ifndef O_NOCTTY #define O_NOCTTY 00000400 /* not fcntl */ #endif #ifndef O_TRUNC #define O_TRUNC 00001000 /* not fcntl */ #endif #ifndef O_APPEND #define O_APPEND 00002000 #endif #ifndef O_NONBLOCK #define O_NONBLOCK 00004000 #endif #ifndef O_SYNC #define O_SYNC 00010000 #endif #ifndef FASYNC #define FASYNC 00020000 /* fcntl, for BSD compatibility */ #endif #ifndef O_DIRECT #define O_DIRECT 00040000 /* direct disk access hint */ #endif #ifndef O_LARGEFILE #define O_LARGEFILE 00100000 #endif #ifndef O_DIRECTORY #define O_DIRECTORY 00200000 /* must be a directory */ #endif #ifndef O_NOFOLLOW #define O_NOFOLLOW 00400000 /* don't follow links */ #endif #ifndef O_NOATIME #define O_NOATIME 01000000 #endif #ifndef O_CLOEXEC #define O_CLOEXEC 02000000 /* set close_on_exec */ #endif #ifndef O_NDELAY #define O_NDELAY O_NONBLOCK #endif
注意:
#define O_RDONLY?? ?00000000
#define O_WRONLY?? ?00000001
#define O_RDWR?? ??? ?00000002
所以:O_RDONLY | O_WRONLY = 1 ,并不等于O_RDWR。
總結
以上是生活随笔為你收集整理的O_RDWR, O_CREAT等open函数标志位在哪里定义?的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: readdirectorychanges
- 下一篇: [vim] vim中使用cscope的安