Ký ^D
tự (còn được gọi là \04
hoặc 0x4, END OF TRANSMISSION bằng Unicode) là giá trị mặc định cho eof
tham số ký tự điều khiển đặc biệt của trình điều khiển đầu cuối hoặc trình điều khiển giả trong nhân (chính xác hơn là theo tty
quy tắc dòng được gắn vào nối tiếp hoặc giả thiết bị tty ). Đó là c_cc[VEOF]
những termios
cấu trúc truyền cho TCSETS / TCGETS ioctl
một vấn đề với thiết bị đầu cuối để ảnh hưởng đến hành vi của tài xế.
Lệnh điển hình gửi chúng ioctls
là stty
lệnh.
Để lấy tất cả các tham số:
$ stty -a
tốc độ 38400 baud; hàng 58; cột 191; dòng = 0;
xâm nhập = ^ C; bỏ = ^ \; xóa = ^?; giết = ^ U; eof = ^ D ; eol = <undef>; eol2 = <undef>; swtch = <undef>; bắt đầu = ^ Q; dừng lại = ^ S; nghi ngờ = ^ Z; rprnt = ^ R; werase = ^ W; lnext = ^ V; tuôn ra = ^ O;
tối thiểu = 1; thời gian = 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-nobnl onlcr -onoc -onlret -ofill -ofdel nl0 cr0 tab0 bs0 vt0 ff0
isig icanon iexten echo echoe echok -echonl -noflsh -xcase -tostop -echoprt echoctl echoke
eof
Tham số đó chỉ liên quan khi thiết bị đầu cuối ở icanon
chế độ.
Trong chế độ đó, trình điều khiển đầu cuối (không phải trình giả lập thiết bị đầu cuối) thực hiện trình chỉnh sửa dòng rất đơn giản , nơi bạn có thể gõ Backspaceđể xóa một ký tự, Ctrl-Uđể xóa toàn bộ dòng ... Khi một ứng dụng đọc từ thiết bị đầu cuối, nó sẽ không thấy gì cho đến khi bạn nhấn Returnvào điểm read()
trả về dòng đầy đủ bao gồm LF
ký tự cuối cùng (theo mặc định, trình điều khiển thiết bị đầu cuối cũng dịch các CR
thiết bị đầu cuối của bạn gửi Returnđến LF
).
Bây giờ, nếu bạn muốn gửi những gì bạn đã nhập cho đến nay mà không cần nhấn Enter, đó là nơi bạn có thể nhập eof
ký tự. Khi nhận được ký tự đó từ trình giả lập thiết bị đầu cuối, trình điều khiển thiết bị đầu cuối sẽ gửi nội dung hiện tại của dòng, để ứng dụng thực hiện read
trên đó sẽ nhận được nó (và nó sẽ không bao gồm LF
ký tự dấu ).
Bây giờ, nếu dòng hiện tại trống và được cung cấp, ứng dụng sẽ đọc đầy đủ các dòng đã nhập trước đó, read
sẽ trả về 0 ký tự.
Điều đó biểu thị phần cuối của tệp cho ứng dụng (khi bạn đọc từ một tệp, bạn đọc cho đến khi không còn gì để đọc). Đó là lý do tại sao nó được gọi là eof
ký tự, bởi vì việc gửi nó khiến ứng dụng thấy rằng không có thêm đầu vào nào khả dụng.
Bây giờ, các shell hiện đại, tại dấu nhắc của chúng không đặt thiết bị đầu cuối ở icanon
chế độ vì chúng thực hiện trình chỉnh sửa dòng riêng của chúng, tiên tiến hơn nhiều so với trình điều khiển đầu cuối tích hợp sẵn. Tuy nhiên, trong trình chỉnh sửa dòng riêng của họ , để tránh gây nhầm lẫn cho người dùng, họ cung cấp cho ^D
nhân vật (hoặc bất kỳ eof
cài đặt nào của thiết bị đầu cuối với một số) có cùng ý nghĩa (để biểu thị eof
).