LinuxSir.cn,穿越时空的Linuxsir!

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

请问文件说明符3是干什么用的

[复制链接]
发表于 2003-12-19 21:29:10 | 显示全部楼层 |阅读模式
我在一本书上读到文件说明符还有3
不知道这个3是指的什么东西?
发表于 2003-12-19 23:58:14 | 显示全部楼层
在程序设计中,0表示标准输入文件描述符,1表示标准输出描述符,2表示标准错误描述符,再进行一次文件操作所获得的文件描述符一般就是3,并以此后推
发表于 2003-12-20 00:06:41 | 显示全部楼层

回复: 请问文件说明符3是干什么用的

最初由 fishfeather 发表
我在一本书上读到文件说明符还有3
不知道这个3是指的什么东西?

干什么的? :ask
举个例子吧~~
exec 3< filename #用exec打开文件描述符3,从文件filename读取
read -u3 line1  #用read直接从这个打开的3读取一行,并赋值给变量line1
exec 3<&- #关闭文件描述符3,文件filename不再打开.
具体关于描述符,重定向的讨论咱们shell版里面有很多,搜索一下,收获一定不会少!

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有帐号?注册

x
发表于 2003-12-20 22:27:22 | 显示全部楼层
这里有详细的解释:

在Linux(UNIX)编程中,/dev/fd  目录下的0,1,2,3,等文件,的确是指内存打开的文件的文件描述符!打开文件/dev/fb/n等效于复制描述符n(假述描述符n是打开的),BSD系统是支持这种特征的,
比如fb=open("/dev/fd/0",mode);等效于fb=dup(0);
描述符0和fd共享同一文件表项,一般情况下是由shell使用的,允许程序以对待其他路径名一样的方式使用路径名参数来处理标准输入和标准输出,如
filter file2| cat file1 - file3 | lpr
首先cat读file1,接着读其标准输入(就是filter file2命令的输出),然后读file3,如系统支持/dev/fd,则可以删除cat对-的特殊处理,也就可以键入以下命令
filter file2 | cat file1 /dev/fd/0 file3 | lpr
/dev/fd提高了文件名参数的一致性.
您需要登录后才可以回帖 登录 | 注册

本版积分规则

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