Я бы хотел, чтобы скрипт bash выводил дополнительную информацию в файловые дескрипторы (FD), большие или равные 3, когда они открыты. Чтобы проверить, открыт ли FD, я разработал следующий трюк:
if (printf '' 1>&3) 2>&-; then
# File descriptor 3 is open
else
# File descriptor 3 is not open
fi
Этого достаточно для моих нужд, но мне любопытно, есть ли более идиоматический способ проверки, действителен ли FD. Меня особенно интересует, существует ли отображение fcntl(1)
системного вызова на команду оболочки, которая позволила бы извлекать флаги FD ( O_WRONLY
и O_RDWR
проверять, является ли FD доступным для записи, и O_RDONLY
и O_RDWR
проверять, является ли FD читаемым).
<>
? Оболочка не будет читать из своего stderr, почему вы хотите открыть ее в режиме чтения + записи? Что вы имеете в виду с тем, что произошло с внутренним? ?