คำถามติดแท็ก buffer

แท็กนี้มีไว้สำหรับคำถามเกี่ยวกับแคชบัฟเฟอร์เคอร์เนลรวมถึงไพพ์บัฟเฟอร์ สิ่งเหล่านี้ใช้เพื่อจัดเก็บไฟล์ที่เข้าถึงล่าสุดและ / หรือไฟล์ที่เข้าถึงบ่อย

6
โปรแกรมที่สามารถบัฟเฟอร์ stdin หรือไฟล์
นอกเหนือจากการใช้แฟ้มชั่วคราวเพื่อช่วยเหลือมีวิธี / โปรแกรมอาจบัฟเฟอร์ข้อมูลจากแต่ไม่ออกเนื้อหาจนกว่าจะได้รับstdin EOFฉันไม่ต้องการใช้ตัวแปรเชลล์ (เช่นbuffer=$(cat)) โปรแกรมนี้ควรทำงานตามด้านล่าง (สมมติว่าชื่อโปรแกรมคือbuffered-cat) $ buffered-cat line 1 line 2 line 3 ^D # Ctr-D here(End of Line) หลังจากที่โปรแกรมได้รับ^Dแล้วbuffered-catส่งออกเนื้อหา line 1 line 2 line 3
12 shell  stdout  buffer 

1
ท่อ“ รั่ว” ใน linux
สมมติว่าคุณมีไพพ์ไลน์ดังนี้: $ a | b หากbหยุดการประมวลผล stdin หลังจากนั้นไม่นานท่อจะเต็มและเขียนจากaไปยัง stdout จะบล็อก (จนกว่าจะbเริ่มการประมวลผลอีกครั้งหรือไม่ก็ตาย) หากฉันต้องการหลีกเลี่ยงสิ่งนี้ฉันอาจถูกล่อลวงให้ใช้ท่อขนาดใหญ่กว่า (หรือมากกว่านั้นbuffer(1)) ได้เช่น: $ a | buffer | b นี่จะซื้อเวลาให้ฉันมากขึ้น แต่ในที่สุดaก็จะหยุด สิ่งที่ฉันชอบ (สำหรับสถานการณ์ที่เฉพาะเจาะจงมากที่ฉันกำลังพูดถึง) คือการมีท่อ "รั่ว" ที่เมื่อเต็มแล้วจะลดลงข้อมูลบางส่วน (นึกคิดทีละบรรทัดโดยบรรทัด) จากบัฟเฟอร์เพื่อให้aดำเนินการต่อ การประมวลผล (อย่างที่คุณคงจินตนาการได้ว่าข้อมูลที่ไหลในไพพ์นั้นมีค่าใช้จ่ายนั่นคือการมีข้อมูลที่ประมวลผลโดยbมีความสำคัญน้อยกว่าการaวิ่งโดยไม่ปิดกั้น) เพื่อสรุปมันขึ้นมาฉันชอบที่จะมีบางสิ่งบางอย่างเช่นบัฟเฟอร์ที่มีขอบเขตและมีรอยรั่ว: $ a | leakybuffer | b ฉันอาจใช้มันได้อย่างง่ายดายในภาษาใด ๆ ฉันแค่สงสัยว่ามีบางสิ่งที่ "พร้อมใช้" (หรือบางสิ่งบางอย่างเช่นทุบตีสายการบินเดียว) ที่ฉันขาดไป หมายเหตุ: ในตัวอย่างที่ฉันใช้ไพพ์ทั่วไป แต่คำถามก็ใช้ได้กับไพพ์ที่ตั้งชื่อด้วย ในขณะที่ฉันได้รับคำตอบด้านล่างฉันก็ตัดสินใจที่จะใช้คำสั่ง leakybuffer เพราะวิธีง่ายๆด้านล่างมีข้อ …
12 linux  pipe  fifo  buffer 
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.