+ -
当前位置:首页 → 问答吧 → 求教一个文件描述符和重定向的问题

求教一个文件描述符和重定向的问题

时间:2011-10-12

来源:互联网

小弟学习重定向时看到这一段代码
$exec 6<>/tmp/fd6 
$echo "df -h" >&6
$echo "ls -li" >&6 
$echo "free -m" >&6 
执行结果是echo的这些内容都到/tmp/fd6文件里去了,屏幕上没有输出。

但我就是第一句不明白:exec 6<>/tmp/fd6 ;这该怎么理解?使文件描述符6指向stdout(<),再把stdin(>)重定向到/tmp/fd6文件?感觉不对啊。还是说exec id<>file;这是把文件描述符id重定向到file的固定格式呢?

另外,就算要实现6重定向到/tmp/fd6,那不是这样就可以了么:
$exec 6>/tmp/fd6;
$echo "df -h" >&6; #这样echo的内容就被导入到文件里去了

既然可以这么简单,那为什么要用exec 6<>/tmp/fd6 这种难理解的格式呢?求指教!

作者: njusthsy   发布时间: 2011-10-12

http://bbs.chinaunix.net/thread-3606539-1-1.html

作者: o06v90o   发布时间: 2011-10-12

看样就是exec <> 是重定向描述符6的定向到文件/tmp/fd6,文件打开方式为读写。

之后的exec >& 是将程序输出写到描述符6.

exec > 是将描述符1定向到文件,文件打开方式为写。

总结起来感觉就是:>&是写往某个描述符的意思,n>filename是重定向描述符n到某个文件,文件写打开。

n<>filename就是重定向描述符n到filename,filename以读写打开。

作者: qq120848369   发布时间: 2011-10-12

程序或者命令后边跟着>,< 属于给子进程的描述符重定向.

exec 后边跟着<,>属于给父进程的描述符重定向.

应该是这个关系.

作者: qq120848369   发布时间: 2011-10-12

相关阅读 更多