linux每一个打开文件都会关联一个文件描述符,需要的时候我们可以使用exec命令指定一个大于3的数字作为文件
每打开一个shell就会打开默认的三个文件描述符描0,1,2,分别代表标准输入,标准输出和标准错误输出。
exec 5>/tmp/a.txt 读方式
exec 5/a.txt 写方式
exec 5/tmp/a.txt 读写方式
exec 5&- 关闭文件描述符
应用案例:在shell脚本中重新关联标准输出,从而记录日志到指定文件
#!/bin/bash exec 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/bash exec 4>/tmp/abc echo "123" >&4 echo "456" >&4 exec 4>&-
则每次执行完脚本后/tmp/abc文件内容都是123\n456
若把第二行换成exec 4>>/tmp/abc则会追加进去
文件的清空操作是在exec命令的操作时进行的
以上就是linux中exec操作文件描述符的详细内容,更多请关注php中文网其它相关文章!
每个人都需要一台速度更快、更稳定的 PC。随着时间的推移,垃圾文件、旧注册表数据和不必要的后台进程会占用资源并降低性能。幸运的是,许多工具可以让 Windows 保持平稳运行。
Copyright 2014-2025 https://www.php.cn/ All Rights Reserved | php.cn | 湘ICP备2023035733号