关于linux重定向的解析

来源:互联网 发布:使用淘宝用户调查 编辑:程序博客网 时间:2024/05/15 16:54
关于linux重定向的解析
apue书中 p64程序清单3.4有4种调用方式及结果
---------------------------------------------
./a.out 0 < /dev/tty
read only
./a.out 1 > temp.foo
write only
./a.out 2 2>>temp.foo
write only, append
./a.out 5 5<>temp.foo
read write
----------------------------------------------
前2个很好解释 大家都能看懂 关键是后面2个 把我害苦了
在网上搜索资料<<linux shell 中"2>&1"含义>>这个看后,终于让我想通了为什么
---------------------------------------------------------------------------
现解释如下:
1) 标准输入0作为参数传递给a.out,
   < /dev/tty 这个虚拟tty文件的输入被重定向到了a.out的标准输入
   也就是a.out的标准输入就变成了/dev/tty
   其实可以写成   ./a.out 0 0</dev/tty
2)第二个同理
   可以写成    ./a.out 1 1>temp.foo 
   所以标准输出绑定到了文件temp.foo
   相当于在文件描述符1上打开了temp.foo且是只读的模式
   向标准输出写东西就写到了文件temp.foo
3) 第三个同理
   在文件描述符2上打开了文件temp.foo 而2是标准出错,用了>>表示以追加的模式打开了文件temp.foo
   所以取2的属性就取的是打开文件temp.foo的属性,而这个时候系统已经把文件的状态改了打开且追加的模式
4)同理

   在5上以读写模式打开文件,so取文件描述5的属性就是取文件的属性,那么read and write  就可以理解了

转载自:http://blog.csdn.net/runboying/article/details/7045797

0 0