Linux认证辅导:形象的理解dup和dup2函数(4) ]/ {! ?) q& j( b$ Y9 c
三、父子进程间的dup/dup2) p! N8 S/ q* C* w: o
由fork调用得到的子进程和父进程的相同文件描述符共享同一文件表项,如下图所示:
+ _# v* K- ^ K4 i& A/ G) k 父进程A的文件描述符表7 L9 I B6 d) k! p) b
------------9 L* j% n8 j/ m3 ]1 r
fd0 0 | p0
" X* o6 _' k$ s3 j$ b ------------
+ k' F. E2 v! Y/ I) } fd1 1 | p1 -------------》 文件表1 ---------》 vnode13 i8 s( W* U. ?. j6 c( ~" C
------------ /|\
' C$ s0 I2 T0 o2 i fd2 2 | p2 |" C- l( b8 {0 E8 G# m& z$ N8 Q1 v
------------ |4 [* ]: {2 V Y# M
|* x4 K' M$ Z' X
子进程B的文件描述符表 |* P" ]5 X# B# v6 P% c) c- E2 \# X3 \
------------ |, ^: H. L% Y. i7 V2 D
fd0 0 | p0 |
* X; ?$ ~* u' v/ r4 ~4 C/ x% o ------------ |
6 z$ s, W+ w5 A& M2 p fd1 1 | p1 ---------------------|
+ {( H6 [/ w0 e: T2 b: e ------------! F2 F, i/ F( @ x$ B
fd2 2 | p2& ^* A4 d+ W2 ?, R o' J) A1 H
------------& Q. M( p8 b, m
所以恰当的利用dup2和dup可以在父子进程之间建立一条“沟通的桥梁”。这里不详述。+ k4 w0 R( I) d2 z4 _5 _ Y, `
四、小结6 R3 T) e, b! q
灵活的利用dup/dup2可以给你带来很多强大的功能,花了一些时间总结出上面那么多,不知道自己理解的是否透彻,只能在以后的实践中慢慢探索了。 |