LinuxSir.cn,穿越时空的Linuxsir!

 找回密码
 注册
搜索
热搜: shell linux mysql
查看: 2297|回复: 5

请教 open("/dev/null",o_rdwr)的问题

[复制链接]
发表于 2003-12-9 09:29:42 | 显示全部楼层 |阅读模式
请那位大侠回答俺

open("/dev/null",..)是什么意思?
为什么很多程序在一开始的时候要做这样的处理
好像这个与标准输入输出联系 但是 俺还是不太理解它的意义

/*
*  make sure we have stdin/stdout/stderr reserved
*/

while((t = open("/dev/null",O_RDWR)) < 3 && T >= 0)
if(t >= 3) close(t)

它的意义是什么?
发表于 2003-12-9 10:48:01 | 显示全部楼层
写入/dev/null的东西会被系统丢掉

就像注释写的那样,对stdin/stdout/stderr进行保护
代码中利用while先把文件描述符0,1,2分配出去,以后再分配
的时候就不会将stdin/stdout/stderr打开,以达到保护目的。

i think

btw,那个reserved是保护还是保留?我忘了:(
 楼主| 发表于 2003-12-9 11:14:11 | 显示全部楼层

谢谢

呵呵 虽然还是有些不明白。。。。。。。。。。。。
发表于 2003-12-9 11:37:09 | 显示全部楼层
stdin/stdout/stderr对应的描述符是0,1,2
 楼主| 发表于 2003-12-9 11:48:36 | 显示全部楼层

谢谢楼上 我明白了

明白了。。。。。。。
原来是这个意思
也就是说为了防止标准stdin/stdout/stderr再次被打开
感谢ing
发表于 2003-12-9 11:50:45 | 显示全部楼层
welcome
您需要登录后才可以回帖 登录 | 注册

本版积分规则

快速回复 返回顶部 返回列表