The ^D
karakter (juga dikenal sebagai \04
atau 0x4, AKHIR TRANSMISI di Unicode) adalah nilai default untuk eof
parameter karakter kontrol khusus dari terminal atau pengemudi pseudo-terminal di kernel (lebih tepatnya dari tty
disiplin baris melekat pada serial atau pseudo perangkat tty ). Itulah c_cc[VEOF]
yang termios
struktur dilewatkan ke TCSETS / TCGETS ioctl
salah satu isu ke perangkat terminal untuk mempengaruhi perilaku pengemudi.
Perintah khas yang mengirim itu ioctls
adalah stty
perintah.
Untuk mengambil semua parameter:
$ stty -a
kecepatan 38400 baud; baris 58; kolom 191; baris = 0;
intr = ^ C; berhenti = ^ \; hapus = ^?; bunuh = ^ U; bukti = ^ D ; eol = <undef>; eol2 = <undef>; swtch = <undef>; mulai = ^ Q; stop = ^ S; susp = ^ Z; rprnt = ^ R; werase = ^ W; lnext = ^ V; flush = ^ O;
min = 1; waktu = 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
Itu eof
parameter hanya relevan bila perangkat terminal di icanon
modus.
Dalam mode itu, driver terminal (bukan emulator terminal) mengimplementasikan editor baris yang sangat sederhana , di mana Anda dapat mengetik Backspaceuntuk menghapus karakter, Ctrl-Uuntuk menghapus seluruh baris ... Ketika aplikasi membaca dari perangkat terminal, ia tidak melihat apa pun hingga Anda menekan Returnpada titik mana read()
mengembalikan garis penuh termasuk LF
karakter terakhir (secara default, driver terminal juga menerjemahkan yang CR
dikirim oleh terminal Anda Returnke LF
).
Sekarang, jika Anda ingin mengirim apa yang Anda ketikkan sejauh ini tanpa menekan Enter, di situlah Anda dapat memasukkan eof
karakter. Setelah menerima karakter itu dari emulator terminal, driver terminal mengirimkan konten baris saat ini, sehingga aplikasi yang melakukan hal read
itu akan menerimanya apa adanya (dan itu tidak akan menyertakan LF
karakter tambahan).
Sekarang, jika baris saat ini kosong, dan asalkan aplikasi akan sepenuhnya membaca baris yang dimasukkan sebelumnya, read
akan mengembalikan 0 karakter.
Itu menandakan akhir file ke aplikasi (ketika Anda membaca dari file, Anda membaca sampai tidak ada lagi yang bisa dibaca). Itu sebabnya ini disebut eof
karakter, karena mengirimkannya menyebabkan aplikasi melihat bahwa tidak ada lagi input yang tersedia.
Sekarang, shell modern, pada prompt mereka tidak mengatur terminal dalam icanon
mode karena mereka mengimplementasikan editor baris mereka sendiri yang jauh lebih maju daripada driver terminal built-in. Namun, dalam editor baris mereka sendiri , untuk menghindari membingungkan para pengguna, mereka memberikan ^D
karakter (atau apa pun pengaturan terminal eof
dengan beberapa) makna yang sama (untuk menandakan eof
).