Ich möchte, dass ein Bash-Skript zusätzliche Informationen an Dateideskriptoren (FDs) ausgibt, die größer oder gleich 3 sind, wenn sie geöffnet sind. Um zu testen, ob ein FD geöffnet ist, habe ich den folgenden Trick entwickelt:
if (printf '' 1>&3) 2>&-; then
# File descriptor 3 is open
else
# File descriptor 3 is not open
fi
Dies ist ausreichend für meine Bedürfnisse, aber ich bin gespannt, ob es eine idiomatischere Möglichkeit gibt, zu testen, ob ein FD gültig ist. Ich bin besonders über interessiert , ob es existiert eine Zuordnung des fcntl(1)
syscall zu einem Shell - Befehl, der dem Abrufen von FD - Flags erlauben würde ( O_WRONLY
und O_RDWR
zu testen , ob die FD beschreibbar ist, und O_RDONLY
und O_RDWR
zu testen , ob die FD lesbar sind).
<>
? Die Shell wird nicht von ihrem stderr lesen. Warum sollten Sie sie in read + write öffnen? Was meinst du mit dem, was mit intrinsic passiert ist? ?