ฉันได้อ่านเกี่ยวกับวิธีการใช้ไพพ์ในเคอร์เนล Linux และต้องการตรวจสอบความเข้าใจของฉัน หากฉันไม่ถูกต้องคำตอบพร้อมคำอธิบายที่ถูกต้องจะถูกเลือก
- Linux มี VFS เรียกว่า pipefs ที่ติดตั้งในเคอร์เนล (ไม่ใช่ในพื้นที่ผู้ใช้)
- pipefs มีซุปเปอร์บล็อกเดียวและติดตั้งที่รูทของมันเอง (
pipe:) ข้างๆ/ - pipefs ไม่สามารถดูได้โดยตรงเหมือนกับระบบไฟล์ส่วนใหญ่
- รายการไปยัง pipefs คือผ่าน
pipe(2)syscall -
pipe(2)syscall ใช้โดยเปลือกหอยสำหรับท่อกับ|ผู้ประกอบการ (หรือด้วยตนเองจากกระบวนการอื่น ๆ ) สร้างไฟล์ใหม่ใน pipefs ซึ่งทำงานสวยมากเช่นไฟล์ปกติ - ไฟล์ทางด้านซ้ายของผู้ประกอบการไปป์ได้
stdoutถูกเปลี่ยนเส้นทางไปยังไฟล์ชั่วคราวที่สร้างขึ้นใน pipefs - ไฟล์ทางด้านขวาของผู้ปฏิบัติงานไปป์มี
stdinไพพ์ตั้งค่าไฟล์ไว้ที่ pipefs - pipefs ถูกเก็บไว้ในหน่วยความจำและผ่านเคอร์เนลเวทย์มนตร์บางอย่างไม่ควรทำเพจ
นี่คือคำอธิบายว่าท่ออย่างไร (เช่น ls -la | less ) ว่าถูกต้องหรือไม่?
สิ่งหนึ่งที่ผมไม่เข้าใจคือวิธีการบางอย่างเช่นทุบตีจะตั้งเป็นกระบวนการstdinหรือจะอธิบายไฟล์ที่ส่งกลับโดยstdout pipe(2)ฉันยังไม่พบอะไรเกี่ยวกับสิ่งนั้น
ใช่ฉันหมายถึงการปฏิบัติการระดับล่างโดยเฉพาะโดยมีข้อสันนิษฐานว่า
—
Brandon Wamboldt
|โอเปอเรเตอร์กำลังเรียกpipe(2)เช่นเดียวกับกระบวนการที่ทุบตี
pipe()เรียกเคอร์เนลพร้อมกับเครื่องจักรที่รองรับ (pipefsฯลฯ ) นั้นต่ำกว่า|โอเปอเรเตอร์ที่มีให้ในเปลือก หลังมักจะใช้งานโดยใช้อดีต แต่ไม่จำเป็นต้องเป็น