当前位置: 技术问答>linux和unix
APUE初学者:请问dup,dup2函数可以用来干什么?有什么好处?
来源: 互联网 发布时间:2016-08-14
本文导语: 我是一个APUE的初学者,在看第三章-文件I/O时,不知道dup,dup2函数可以用来干什么,为什么要去复制文件描述符呢?希望有大虾能教教我。谢谢! | 最著名的例子Unix下的管道。 pipe到一对描述...
我是一个APUE的初学者,在看第三章-文件I/O时,不知道dup,dup2函数可以用来干什么,为什么要去复制文件描述符呢?希望有大虾能教教我。谢谢!
|
最著名的例子Unix下的管道。
pipe到一对描述字后,进行fork, 并把pipe返回的描述字分别dup到管段两端的进程的标准输出和标准输入。
另一个例子是Unix下的inetd。
很多早期的简单internet服务(比如telnetd)都由inetd来启动。
inetd会监听这些服务的端口,当accept到客户连接的时候, 通过fork和exec启动相应的服务程序。
服务处理完客户请求就退出。
但是服务程序(比如telnetd)并不知道应该accept返回的套接口描述字是多少,inetd的处理方法就是将
关闭0号和1号描述字然后dup两次,就把套接口描述字复制到了标准输入和标准输出.这样telnetd只需从
0号描述字读入输入,并把输出写到1号描述字。
pipe到一对描述字后,进行fork, 并把pipe返回的描述字分别dup到管段两端的进程的标准输出和标准输入。
另一个例子是Unix下的inetd。
很多早期的简单internet服务(比如telnetd)都由inetd来启动。
inetd会监听这些服务的端口,当accept到客户连接的时候, 通过fork和exec启动相应的服务程序。
服务处理完客户请求就退出。
但是服务程序(比如telnetd)并不知道应该accept返回的套接口描述字是多少,inetd的处理方法就是将
关闭0号和1号描述字然后dup两次,就把套接口描述字复制到了标准输入和标准输出.这样telnetd只需从
0号描述字读入输入,并把输出写到1号描述字。
|
来个直观的, 在shell里输入ls > a.txt, 这里就用了dup
您可能感兴趣的文章:
本站(WWW.)旨在分享和传播互联网科技相关的资讯和技术,将尽最大努力为读者提供更好的信息聚合和浏览方式。
本站(WWW.)站内文章除注明原创外,均为转载、整理或搜集自网络。欢迎任何形式的转载,转载请注明出处。
本站(WWW.)站内文章除注明原创外,均为转载、整理或搜集自网络。欢迎任何形式的转载,转载请注明出处。