|
demo是判断一个文件的file status,但是对里面的example data不是很明白,能告诉我原理吗?谢谢!
[PHP]$ ./a.out 0 < /dev/tty
read only
$ ./a.out 1 > temp.foo
$ cat temp.foo
write only
$ ./a.out 2 2>>temp.foo
write only, append
$ ./a.out 5 5<>temp.foo
read write
[/PHP]
代码如下
- #include "apue.h"
- #include <fcntl.h>
- int
- main(int argc, char *argv[])
- {
- int val;
- if (argc != 2)
- err_quit("usage: a.out <descriptor#>");
- if ((val = fcntl(atoi(argv[1]), F_GETFL, 0)) < 0)
- err_sys("fcntl error for fd %d", atoi(argv[1]));
- switch (val & O_ACCMODE) {
- case O_RDONLY:
- printf("read only");
- break;
- case O_WRONLY:
- printf("write only");
- break;
- case O_RDWR:
- printf("read write");
- break;
- default:
- err_dump("unknown access mode");
- }
- if (val & O_APPEND)
- printf(", append");
- if (val & O_NONBLOCK)
- printf(", nonblocking");
- #if defined(O_SYNC)
- if (val & O_SYNC)
- printf(", synchronous writes");
- #endif
- #if !defined(_POSIX_C_SOURCE) && defined(O_FSYNC)
- if (val & O_FSYNC)
- printf(", synchronous writes");
- #endif
- putchar('\n');
- exit(0);
- }
复制代码
ps:我刚学linux,但是知道< >是重定向,但是对怎么会产生这个结果不是很明白.  |
|