Saya ingin membuat bash script menghasilkan informasi tambahan ke file descriptors (FDs) lebih besar dari atau sama dengan 3, ketika mereka terbuka. Untuk menguji apakah FD terbuka, saya menyusun trik berikut:
if (printf '' 1>&3) 2>&-; then
# File descriptor 3 is open
else
# File descriptor 3 is not open
fi
Ini cukup untuk kebutuhan saya, tapi saya ingin tahu apakah ada cara yang lebih idiomatis untuk menguji apakah FD itu valid. Saya terutama tertarik tentang apakah ada pemetaan fcntl(1)
syscall ke perintah shell, yang akan memungkinkan pengambilan bendera FD ( O_WRONLY
dan O_RDWR
untuk menguji apakah FD dapat ditulisi, dan O_RDONLY
dan O_RDWR
untuk menguji apakah FD dapat dibaca).
<>
? Shell tidak akan membaca dari stderrnya, mengapa Anda ingin membukanya di read + write? Apa maksud Anda dengan apa yang terjadi pada intrinsik? ?