คำตอบส่วนใหญ่ที่นี่[ 1 ] [ 2 ] [ 3 ]ใช้วงเล็บมุมเดียวเพื่อเปลี่ยนเส้นทางไปยัง / dev / null เช่นนี้
command > /dev/null
แต่การผนวกกับ / dev / null ก็ใช้งานได้เช่นกัน:
command >> /dev/null
ยกเว้นตัวละครพิเศษมีเหตุผลอะไรที่จะไม่ทำเช่นนี้? เป็น "nicer" เหล่านี้อย่างใดอย่างหนึ่งเพื่อการใช้งานพื้นฐานของ / dev / null?
แก้ไข: เปิด (2) manpageกล่าวlseekเรียกว่าก่อนที่จะเขียนไฟล์ในโหมดผนวก:
O_APPEND
ไฟล์ถูกเปิดในโหมดต่อท้าย ก่อนการเขียนแต่ละครั้ง (2) ไฟล์ออฟเซ็ตจะอยู่ที่ท้ายไฟล์เช่นเดียวกับ lseek (2) การแก้ไขไฟล์ออฟเซ็ตและการดำเนินการเขียนจะดำเนินการในขั้นตอนเดียวของอะตอมมิก
ซึ่งทำให้ฉันคิดว่าอาจจะมีการลงโทษประสิทธิภาพเล็ก ๆ >>
สำหรับการใช้ แต่ในทางกลับกันการตัดทอน / dev / null ดูเหมือนว่าเป็นการดำเนินการที่ไม่ได้กำหนดตามเอกสารนั้น:
O_TRUNC
หากไฟล์มีอยู่แล้วและเป็นไฟล์ปกติและโหมดการเข้าถึงอนุญาตให้เขียน (เช่นคือ O_RDWR หรือ O_WRONLY) ไฟล์นั้นจะถูกตัดทอนเป็นความยาว 0 หากไฟล์นั้นเป็นไฟล์ FIFO หรือเทอร์มินัลแฟล็ก O_TRUNC จะถูกละเว้น มิฉะนั้นเอฟเฟกต์ของ O_TRUNC จะไม่ได้รับการระบุ
และข้อมูลจำเพาะ POSIX บอกว่า>
จะตัดทอนไฟล์ที่มีอยู่แต่O_TRUNC ถูกกำหนดให้ใช้งานสำหรับไฟล์อุปกรณ์และไม่มีคำตอบว่า / dev / null ควรตอบสนองต่อการถูกตัดทอนอย่างไร
ดังนั้นการตัดทอน / dev / null จึงไม่ได้ระบุจริงหรือ และการเรียกlseekมีผลกระทบต่อประสิทธิภาพการเขียนหรือไม่?