Tôi muốn tạo một tập lệnh bash xuất thông tin bổ sung cho bộ mô tả tệp (FD) lớn hơn hoặc bằng 3, khi chúng được mở. Để kiểm tra xem FD có mở không, tôi đã nghĩ ra mẹo sau:
if (printf '' 1>&3) 2>&-; then
# File descriptor 3 is open
else
# File descriptor 3 is not open
fi
Điều này là đủ cho nhu cầu của tôi, nhưng tôi tò mò liệu có cách kiểm tra nào thành ngữ hơn nếu FD là hợp lệ. Tôi đặc biệt quan tâm đến việc có tồn tại ánh xạ của tòa nhà fcntl(1)
thành lệnh shell hay không, điều này sẽ cho phép truy xuất các cờ FD ( O_WRONLY
và O_RDWR
để kiểm tra xem FD có thể ghi được hay không O_RDONLY
và O_RDWR
để kiểm tra xem FD có đọc được không).
<>
gì? Shell sẽ không đọc từ stderr của nó, tại sao bạn muốn mở nó trong read + write? Bạn có ý nghĩa gì với những gì đã xảy ra với nội tại? ?