Chciałbym, aby skrypt bash wyprowadzał dodatkowe informacje do deskryptorów plików (FD) większe lub równe 3, gdy są otwarte. Aby sprawdzić, czy FD jest otwarty, opracowałem następującą sztuczkę:
if (printf '' 1>&3) 2>&-; then
# File descriptor 3 is open
else
# File descriptor 3 is not open
fi
Jest to wystarczające dla moich potrzeb, ale jestem ciekawy, czy istnieje bardziej idiomatyczny sposób testowania, czy FD jest ważny. Jestem szczególnie zainteresowany tym, czy istnieje odwzorowanie fcntl(1)
syscall na polecenie powłoki, które pozwalają na pobieranie FD flagami ( O_WRONLY
oraz O_RDWR
do badania, czy FD jest zapisywalny, a O_RDONLY
i O_RDWR
do testu czy FD jest czytelny).
<>
? Powłoka nie będzie czytać ze swojego standardu, dlaczego miałbyś chcieć otworzyć ją w trybie odczytu + zapisu? Co masz na myśli przez to, co się stało z tym, co wewnętrzne? ?