天天看点

linux open(“dev“,0)的解惑linux open(“dev/XXX”,0)

linux open(“dev/XXX”,0)

今天突然遇到open(“dev/xxx”,0),虽然之前学习和使用都是O_RDONLY、O_WRONLY,但是,大致也猜到这个“0”是其中某个oflags参数宏的值,只是一直没有时间去看linux相关文件代码,也发现网上有人问却没有相应正确的回答,在此贴出,共同解惑!

#define O_ACCMODE	00000003
#define O_RDONLY	00000000	//显然参数“0” 为只读
#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_NDELAY
#define O_NDELAY	O_NONBLOCK
#endif
           

继续阅读