Me gustaría hacer que un script bash genere información adicional para los descriptores de archivo (FD) mayores o iguales a 3, cuando están abiertos. Para probar si un FD está abierto, ideé el siguiente truco:
if (printf '' 1>&3) 2>&-; then
# File descriptor 3 is open
else
# File descriptor 3 is not open
fi
Esto es suficiente para mis necesidades, pero tengo curiosidad por saber si hay una forma más idiomática de probar si un FD es válido. Estoy especialmente interesado en saber si existe un mapeo de fcntl(1)
syscall a un comando de shell, lo que permitiría la recuperación de banderas FD ( O_WRONLY
y O_RDWR
para probar si el FD es editable, O_RDONLY
y O_RDWR
para probar si el FD es legible).
<>
? El shell no va a leer desde su stderr, ¿por qué querrías abrirlo en lectura + escritura? ¿Qué quieres decir con lo que pasó con intrínseco? ?