dup2()

来源:互联网 发布:淘宝促销广告语大全 编辑:程序博客网 时间:2024/05/29 14:01

dup2(fd1, fd2); 函数功能是将fd1 复制到fd2 上。但是怎么理解呢?

APUE 上有写,如果fd2 是一个已经打开的文件描述符则关闭它,但是如果fd1和fd2 相等,则不会关闭。

这最终的结果,实际上是:当你调用write() 函数(或者其它相关文件描述符的函数) 最终的结果是全部写到了fd1 上,当然了,如果是读也是一样的效果。最终都是从fd1 中读。


我前初一直想不通的是,如果fd2 关了,那这有什么用呢?现在想想,其实实际是fd2 如果是0, 1, 2 的话,那些调用printf() scanf() 相关的函数会起到直接读写fd1 文件的效果,例如管道。

0 0
原创粉丝点击