标签:des ar os for 文件 on 代码 ad amp
O_ACCMODE<0003>:读写文件操作时,用于取出flag的低2位
O_RDONLY<00>:只读打开
O_WRONLY<01>:只写打开
O_RDWR<02>:读写打开
可以很好的理解下面的程序:
1#include <sys/types.h>
2 #include <fcntl.h>
3 #include "ourhdr.h"
4
5 int
6 main(int argc, char *argv[])
7 {
8 int accmode, val;
9 if(argc !=2)
10 err_quit("usage: a.out<descriptor#>");
11
12 if((val=fcntl(atoi(argv[1]),F_GETFL, 0))<0)
13 err_sys("fcntl error for fd %d", atoi(argv[1]));
14
15 accmode=val & O_ACCMODE;
16 if (accmode==O_RDONLY) printf("read only");
17 else if (accmode==O_WRONLY) printf("write only");
18 else if (accmode==O_RDWR) printf("read write");
19 else err_dump("unknown access mode");
20
21 if(val & O_APPEND) printf(", append");
22 if(val & O_NONBLOCK) printf(", nonblocking");
23 #if !defined(_POSIX_SOURCE) && defined(O_SYNC)
if(val & O_SYNC) printf(", synchronous writes");
25 #endif
26 putchar(‘\n‘);
27 exit(0);
28 }
以上代码选自《Unix高级环境编程》
标签:des ar os for 文件 on 代码 ad amp
原文地址:http://www.cnblogs.com/qunxuan/p/4080709.html