免费注册 查看新帖 |

Chinaunix

  平台 论坛 博客 文库
12
最近访问板块 发新帖
楼主: zhanglupanda
打印 上一主题 下一主题

关于dup2复制标准输入不理解。 [复制链接]

论坛徽章:
0
11 [报告]
发表于 2010-03-03 21:55 |只看该作者
STDIN_FILENO,是一个宏,其值是0,shell默认是打开shell时,STDIN_FILEON这个描述符指向标准输入的文件表项,当用dup2(fd[0],STDIN_FILEON)后,关闭标准输入,然后描述符STDIN_FILEON和描述符fd[0],指向同一文件表项。这是dup2的函数功能。
我不明白为什么fd[0]就指向标准输入了呢?(我的理解是,如果fd[0]指向标准输入,fd[0]就指向 标准输入的文件表项)

论坛徽章:
0
12 [报告]
发表于 2010-03-03 22:00 |只看该作者
关闭0,打开0
标准输入不还是打开的么
关闭一扇门,再把那扇门打开,只是重定向了一下而已
anthony1983 发表于 2007-10-31 10:19



        虽然描述符值还是0,但是指向的文件表项不同了(指向不是标准输入的文件表项),那这个0就不代表标准输入的描述符了,我这样理解对吗?

论坛徽章:
0
13 [报告]
发表于 2010-03-04 10:35 |只看该作者
回复 1# zhanglupanda

dup2的第二个参数 在调用dup2的时候如果还打开着dup2会自动关了的哦!!然后在定向的哦!!你自己不用关闭的

论坛徽章:
0
14 [报告]
发表于 2010-03-04 10:44 |只看该作者
在用dup2时,不是先把STDIN_FILENO关闭,再复制的吗?
如果是这样的话,那为什么还要说标准输入成为管道的读端?
实际 上的标准输入不是被关闭了吗?
-----------------
先关闭,再打开重定向.
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

北京盛拓优讯信息技术有限公司. 版权所有 京ICP备16024965号-6 北京市公安局海淀分局网监中心备案编号:11010802020122 niuxiaotong@pcpop.com 17352615567
未成年举报专区
中国互联网协会会员  联系我们:huangweiwei@itpub.net
感谢所有关心和支持过ChinaUnix的朋友们 转载本站内容请注明原作者名及出处

清除 Cookies - ChinaUnix - Archiver - WAP - TOP