^D
ตัวอักษร (ยังเป็นที่รู้จัก\04
หรือ 0x4, END ของการส่งผ่านใน Unicode) เป็นค่าเริ่มต้นสำหรับeof
พิเศษพารามิเตอร์ตัวอักษรการควบคุมของสถานีหรือโปรแกรมควบคุมหลอกขั้วใน kernel (อย่างแม่นยำมากขึ้นของtty
วินัยบรรทัดแนบมากับอนุกรมหรือหลอก อุปกรณ์ tty ) นั่นเป็นc_cc[VEOF]
ของtermios
โครงสร้างส่งผ่านไปยัง TCSETS / การ TCGETS ioctl
หนึ่งประเด็นที่อุปกรณ์ปลายทางที่จะส่งผลกระทบต่อพฤติกรรมของคนขับรถ
คำสั่งทั่วไปที่ส่งคำสั่งเหล่านั้นioctls
คือstty
คำสั่ง
เพื่อดึงพารามิเตอร์ทั้งหมด:
$ stty -a
ความเร็ว 38400 baud; แถว 58; คอลัมน์ 191; บรรทัด = 0;
intr = ^ C; เลิก = ^ \; ลบ = ^ ?; kill = ^ U; eof = ^ D ; eol = <undef>; eol2 = <undef>; swtch = <undef>; start = ^ Q; stop = ^ S; susp = ^ Z; rprnt = ^ R; werase = ^ W; lnext = ^ V; flush = ^ O;
ต่ำสุด = 1; เวลา = 0;
-parenb -parodd cs8 -hupcl -cstopb cread -clocal -crtscts
-ignbrk -brkint -ignpar -parmrk -inpck -istrip -inlcr -igncr icrnl ixon -ixoff -iuclc -ixany -imaxbel iutf8
opost -olcuc -ocrnl onlcr -onocr -onlret -ofill -ofdel nl0 cr0 tab0 bs0 vt0 ff0
isig icanon iexten echo echoe echok -echonl -noflsh -xcase -tostop -echoprt echoctl echoke
ว่าeof
พารามิเตอร์ที่เกี่ยวข้องเฉพาะเมื่ออุปกรณ์ปลายทางอยู่ในicanon
โหมด
ในโหมดนั้นไดรเวอร์เทอร์มินัล (ไม่ใช่เทอร์มินัลอีมูเลเตอร์) ใช้เครื่องมือแก้ไขบรรทัดอย่างง่ายซึ่งคุณสามารถพิมพ์Backspaceเพื่อลบอักขระCtrl-Uเพื่อลบทั้งบรรทัด ... เมื่อแอปพลิเคชันอ่านจากอุปกรณ์เทอร์มินัล คุณกดReturnที่จุดที่read()
ส่งกลับบรรทัดเต็มรวมถึงLF
อักขระตัวสุดท้าย(โดยค่าเริ่มต้นไดรเวอร์เทอร์มินัลยังแปลCR
ส่งโดยเทอร์มินัลของคุณReturnไปยังLF
)
ทีนี้ถ้าคุณต้องการส่งสิ่งที่คุณพิมพ์โดยไม่ต้องกดปุ่มEnterนั่นคือสิ่งที่คุณสามารถป้อนeof
ตัวละคร เมื่อได้รับตัวอักษรนั้นจากเทอร์มินัลอีมูเลเตอร์แล้วไดรเวอร์ของเทอร์มินัลจะส่งเนื้อหาปัจจุบันของบรรทัดเพื่อให้แอปพลิเคชันที่ทำงานอยู่ด้านread
บนจะได้รับตามที่เป็นอยู่ (และจะไม่มีLF
อักขระต่อท้าย)
ตอนนี้ถ้าบรรทัดปัจจุบันว่างเปล่าและหากแอปพลิเคชันได้อ่านบรรทัดที่ป้อนก่อนหน้าอย่างสมบูรณ์แล้วread
จะส่งคืนอักขระ 0 ตัว
นั่นหมายถึงการสิ้นสุดไฟล์ไปยังแอปพลิเคชัน (เมื่อคุณอ่านจากไฟล์คุณจะอ่านจนกว่าจะไม่มีอะไรให้อ่านอีกต่อไป) นั่นเป็นสาเหตุที่เรียกว่าeof
ตัวละครเพราะการส่งมันทำให้แอปพลิเคชั่นเห็นว่าไม่มีการป้อนข้อมูลเพิ่มเติม
ตอนนี้เชลล์ทันสมัยที่พรอมต์ของพวกเขาไม่ได้ตั้งค่าเทอร์มินัลในicanon
โหมดเพราะพวกเขาใช้เครื่องมือแก้ไขบรรทัดของตัวเองซึ่งมีความก้าวหน้ามากกว่าตัวขับเทอร์มินัลในตัว อย่างไรก็ตามในตัวแก้ไขบรรทัดของตนเองเพื่อหลีกเลี่ยงความสับสนของผู้ใช้พวกเขาให้^D
ตัวละคร (หรือสิ่งที่การeof
ตั้งค่าของเทอร์มินัลกับบางคน) ความหมายเดียวกัน (เพื่อบ่งบอกeof
)