|
这《Unix环境高级编程》上的代码
1 #include <sys/types.h>
2 #include <fcntl.h>
3 #include <apue.h>
4
5 int
6 main(int argc, char *argv[])
7 {
8 int accmode, val;
9
10 printf("%s,%s,%s----I'm stdout\n",argv[0],argv[1],argv[2]);
11
12 if (argc != 2)
13 err_quit("usage: a.out <descriptor#>");
14
15 if ( (val = fcntl(atoi(argv[1]), F_GETFL, 0)) < 0)
16 err_sys("fcntl error for fd %d", atoi(argv[1]));
17
18 accmode = val & O_ACCMODE;
19 if (accmode == O_RDONLY) printf("read only");
20 else if (accmode == O_WRONLY) printf("write only");
21 else if (accmode == O_RDWR) printf("read write");
22 else err_dump("unknown access mode");
23
24 if (val & O_APPEND) printf(", append");
25 if (val & O_NONBLOCK) printf(", nonblocking");
26 #if !defined(_POSIX_SOURCE) && defined(O_SYNC)
27 if (val & O_SYNC) printf(", synchronous writes");
28 #endif
29 putchar('\n');
30 exit(0);
31 }
/dev/tty是设备终端
那么./a.out 0 < dev/tty就是把结果输出到终端设备上
结果为read only
但是./a.out 0的结果却是read write
这是为何?? |
|