|
发表于 2004-4-12 13:38:12
|
显示全部楼层
必须得显式关闭。
在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提高了文件名参数的一致性.
- [root@home dev]# exec 9>&1
- [root@home dev]# id 2>&1 1>&9
- uid=0(root) gid=0(root) groups=0(root),1(bin),2(daemon),3(sys),4(adm),6(disk),10(wheel)
- [root@home dev]# ls /dev/fd
- 0 1 2 3 9
- [root@home dev]# exec 9>&-
- [root@home dev]# ls /dev/fd
- 0 1 2 3
复制代码 |
|