The ^Dkarakter (juga dikenal sebagai \04atau 0x4, AKHIR TRANSMISI di Unicode) adalah nilai default untuk eofparameter karakter kontrol khusus dari terminal atau pengemudi pseudo-terminal di kernel (lebih tepatnya dari ttydisiplin baris melekat pada serial atau pseudo perangkat tty ). Itulah c_cc[VEOF]yang termiosstruktur dilewatkan ke TCSETS / TCGETS ioctlsalah satu isu ke perangkat terminal untuk mempengaruhi perilaku pengemudi.
Perintah khas yang mengirim itu ioctlsadalah sttyperintah.
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 eofparameter hanya relevan bila perangkat terminal di icanonmodus.
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 LFkarakter terakhir (secara default, driver terminal juga menerjemahkan yang CRdikirim oleh terminal Anda Returnke LF).
Sekarang, jika Anda ingin mengirim apa yang Anda ketikkan sejauh ini tanpa menekan Enter, di situlah Anda dapat memasukkan eofkarakter. Setelah menerima karakter itu dari emulator terminal, driver terminal mengirimkan konten baris saat ini, sehingga aplikasi yang melakukan hal readitu akan menerimanya apa adanya (dan itu tidak akan menyertakan LFkarakter tambahan).
Sekarang, jika baris saat ini kosong, dan asalkan aplikasi akan sepenuhnya membaca baris yang dimasukkan sebelumnya, readakan 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 eofkarakter, karena mengirimkannya menyebabkan aplikasi melihat bahwa tidak ada lagi input yang tersedia.
Sekarang, shell modern, pada prompt mereka tidak mengatur terminal dalam icanonmode 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 ^Dkarakter (atau apa pun pengaturan terminal eofdengan beberapa) makna yang sama (untuk menandakan eof).