![判断文件描述符是否关闭](https://linux22.com/image/178886/%E5%88%A4%E6%96%AD%E6%96%87%E4%BB%B6%E6%8F%8F%E8%BF%B0%E7%AC%A6%E6%98%AF%E5%90%A6%E5%85%B3%E9%97%AD.png)
在 posix sh 中,是否可以确定文件描述符是否打开?
我为用户提供的扩展名的脚本提供了一个可选的输入文件描述符,读取将立即失败,并显示EBADF
.
#!/bin/sh
database_initialize()
{
echo "create database bob;"
# TODO check if open
# Input file descriptor 3 is used to send to bootstrap
cat <&3
}
database_initialize | mysqld --bootstrap
我想避免 Linux 特定的事情,比如[ -s /proc/self/fd/3 ]
答案1
fd_is_open() (: >&"$1") 2>/dev/null;
if fd_is_open 7; then
...
fi
这会给 fd 2 带来误报,因为我们必须打开它才能消除错误消息。