Linux dup && dup2

dup-完成文件描述符的复制;

dup2-完成已有文件描述符的重定向;

下面通过一段代码详细说明:

进程fd与文件表的对应关系:

进程fd表 —-> 文件表—->v节点表

 

上述源码中的指向关系改变如下:

oldstdout = dup(STDOUT);

–oldstdout指向了STDOUT指向的文件表,现在oldstdout和STDOUT都指向STDOUT的文件表;

dup2(nul, STDOUT)

–STDOUT指向了nul的文件表,现在nul和STDOUT都指向了nul指向的文件表;

dup2(oldstdout, STDOUT)

–STDOUT指向了oldstdout保存的文件表,现在STDOUT和oldstdout都指向了oldstdout指向的文件表;

 

注:打开文件的每个进程都有独立的文件表项,可以使每个进程都有自己对于该文件的当前偏移;

 

详细参考:

http://www.cnblogs.com/GODYCA/archive/2013/01/05/2846197.html

本文链接:Linux dup && dup2

转载声明:转载请注明来源:Linux TCP/IP Stack,谢谢!


发表评论

电子邮件地址不会被公开。 必填项已用*标注