อินพุตมาตรฐาน - นี่คือตัวจัดการไฟล์ที่กระบวนการของคุณอ่านเพื่อรับข้อมูลจากคุณ
เอาต์พุตมาตรฐาน - กระบวนการของคุณเขียนข้อมูลปกติไปยังตัวจัดการไฟล์นี้
ข้อผิดพลาดมาตรฐาน - กระบวนการของคุณเขียนข้อมูลข้อผิดพลาดไปยังตัวจัดการไฟล์นี้
นั่นเป็นเรื่องที่โง่เง่าที่สุดเท่าที่จะทำได้ :-)
แน่นอนว่าส่วนใหญ่เป็นงานประชุม ไม่มีอะไรหยุดคุณจากการเขียนข้อมูลข้อผิดพลาดของคุณไปยังเอาต์พุตมาตรฐานหากคุณต้องการ คุณสามารถปิดการจัดการไฟล์ทั้งสามโดยสิ้นเชิงและเปิดไฟล์ของคุณเองสำหรับ I / O
เมื่อกระบวนการของคุณเริ่มต้นมันควรเปิดตัวจัดการเหล่านี้แล้วและสามารถอ่านและ / หรือเขียนได้
โดยค่าเริ่มต้นพวกมันอาจเชื่อมต่อกับอุปกรณ์เทอร์มินัลของคุณ (เช่น/dev/tty
) แต่เชลล์จะอนุญาตให้คุณตั้งค่าการเชื่อมต่อระหว่างมือจับเหล่านี้กับไฟล์และ / หรืออุปกรณ์ที่เฉพาะเจาะจง กิจวัตรที่เป็นไปได้ค่อนข้างฉลาด)
ตัวอย่างการ:
my_prog <inputfile 2>errorfile | grep XYZ
ซึ่งจะ:
my_prog
สร้างกระบวนการหา
- เปิด
inputfile
เป็นอินพุตมาตรฐานของคุณ (ตัวจัดการไฟล์ 0)
- เปิด
errorfile
เป็นข้อผิดพลาดมาตรฐานของคุณ (จัดการไฟล์ 2)
- สร้างอีก
grep
กระบวนการ
- แนบออกมาตรฐานของการเข้ามาตรฐานของ
my_prog
grep
แสดงความคิดเห็นของคุณอีกครั้ง:
เมื่อฉันเปิดไฟล์เหล่านี้ในโฟลเดอร์ / dev ฉันจะไม่เห็นผลลัพธ์ของกระบวนการที่กำลังทำงานอยู่ได้อย่างไร
เป็นเพราะพวกเขาไม่ใช่ไฟล์ปกติ ในขณะที่ UNIX นำเสนอทุกอย่างเป็นไฟล์ในระบบไฟล์บางที่ไม่ได้ทำให้มันอยู่ในระดับต่ำสุด ไฟล์ส่วนใหญ่ใน/dev
ลำดับชั้นเป็นอุปกรณ์ตัวอักษรหรือบล็อกซึ่งเป็นไดรเวอร์อุปกรณ์ได้อย่างมีประสิทธิภาพ ไม่มีขนาด แต่มีหมายเลขอุปกรณ์หลักและรอง
เมื่อคุณเปิดขึ้นมาคุณกำลังเชื่อมต่อกับไดรเวอร์อุปกรณ์แทนที่จะเป็นแฟ้มจริงและไดรเวอร์อุปกรณ์นั้นฉลาดพอที่จะรู้ว่าควรจัดการกระบวนการแยกต่างหาก
เช่นเดียวกับ/proc
ระบบไฟล์Linux สิ่งเหล่านี้ไม่ใช่ไฟล์จริงเพียงควบคุมเกตเวย์ข้อมูลของเคอร์เนลอย่างแน่นหนา