linux中exec操作文件描述符

linux每一个打开文件都会关联一个文件描述符,需要的时候我们可以使用exec命令指定一个大于3的数字作为文件

linux默认文件描述符

每打开一个shell就会打开默认的三个文件描述符描0,1,2,分别代表标准输入,标准输出和标准错误输出。

exec命令关联文件描述符

exec 5>/tmp/a.txt 读方式
exec 5</tmp/a.txt 写方式
exec 5/tmp/a.txt 读写方式
exec 5&- 关闭文件描述符

应用案例:在shell脚本中重新关联标准输出,从而记录日志到指定文件

#!/bin/bashexec 4>&1         #用4记录标准输出exec 1>/tmp/abc   #重定向标准输出echo "123"echo "456"exec 1>&4         #恢复标准输出exec 4>&-         #关闭4

运行此脚本,脚本中的echo输出会输出到/tmp/abc文件中
脚本第二行用4>&1 是为了记录标准输出的文件描述符便于执行完毕后恢复标准输出,恢复标准输出也可以用exec 1>/dev/tty

注意点:

echo “hello” >&4 向文件描述符中输入内容只使用 > 不能用 >> ,此时的 > 不会清空文件

是否清空文件需要在exec命令关联文件描述符到文件的时候区别使用 > 或 >>,
例有如下脚本:

#!/bin/bashexec 4>/tmp/abcecho "123" >&4echo "456" >&4exec 4>&-

则每次执行完脚本后/tmp/abc文件内容都是123\n456
若把第二行换成exec 4>>/tmp/abc则会追加进去

文件的清空操作是在exec命令的操作时进行的

以上就是linux中exec操作文件描述符的详细内容,更多请关注创想鸟其它相关文章!

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。
如发现本站有涉嫌抄袭侵权/违法违规的内容, 请发送邮件至 chuangxiangniao@163.com 举报,一经查实,本站将立刻删除。
发布者:程序猿,转转请注明出处:https://www.chuangxiangniao.com/p/290408.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2025年11月4日 20:19:07
下一篇 2025年11月4日 20:26:53

相关推荐

发表回复

登录后才能评论
关注微信