ฉันต้องการสร้างสคริปต์ทุบตีข้อมูลเพิ่มเติมให้กับ file descriptors (FDs) มากกว่าหรือเท่ากับ 3 เมื่อเปิด เพื่อทดสอบว่า FD เปิดอยู่หรือไม่ฉันได้วางแผนเคล็ดลับต่อไปนี้:
if (printf '' 1>&3) 2>&-; then
# File descriptor 3 is open
else
# File descriptor 3 is not open
fi
นี่เพียงพอสำหรับความต้องการของฉัน แต่ฉันอยากรู้ว่ามีวิธีการทดสอบที่เป็นไปตามสำนวนมากขึ้นหรือไม่ถ้า FD นั้นถูกต้อง ฉันสนใจเป็นพิเศษเกี่ยวกับว่ามีการแม็พfcntl(1)
syscall กับคำสั่งเชลล์หรือไม่ซึ่งจะอนุญาตให้เรียกใช้แฟล็ก FD ( O_WRONLY
และ O_RDWR
เพื่อทดสอบว่า FD สามารถเขียนได้หรือไม่O_RDONLY
และ O_RDWR
เพื่อทดสอบว่า FD อ่านได้หรือไม่)
<>
อะไร เชลล์ไม่อ่านจาก stderr ของมันทำไมคุณถึงต้องการเปิดมันใน read + write? คุณหมายถึงอะไรกับสิ่งที่เกิดขึ้นกับเนื้อแท้? ?