判断文件描述符是否关闭

判断文件描述符是否关闭

在 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 带来误报,因为我们必须打开它才能消除错误消息。

相关内容