- Di Bash, saya belajar bahwa sinyal
akhir dapat diubah di sini
dokumen. Tetapi secara default, bagaimana saya
memberi sinyal akhir input stdin? - Saya kebetulan menemukan bahwa dengan cat dan
chardet, input stdin mereka dapat
ditandai sebagai selesai dengan Ctrl+d. Tapi
Sepertinya saya ingat bahwa Ctrl+d dan
Ctrl+c mirip dengan mengakhiri
eksekusi dari perintah yang sedang berjalan. Jadi
apakah saya salah?
Jawaban yang Diterima:
Ctrl+D , ketika diketik di awal baris pada terminal, menandakan akhir dari input. Ini bukan sinyal dalam pengertian unix:ketika aplikasi membaca dari terminal dan pengguna menekan Ctrl+D , aplikasi akan diberitahu bahwa akhir file telah tercapai (sama seperti jika sedang membaca dari file dan telah melewati byte terakhir).
Ctrl+C tidak mengirim sinyal, SIGINT. Secara default SIGINT (sinyal interupsi) mematikan aplikasi latar depan, tetapi aplikasi dapat menangkap sinyal dan bereaksi dalam beberapa cara yang berbeda (misalnya, shell itu sendiri menangkap sinyal dan membatalkan baris yang telah Anda mulai ketik, tetapi tidak ' t keluar, ini menunjukkan prompt baru dan menunggu baris perintah baru).
Anda dapat mengubah karakter yang terkait dengan end-of-file dan SIGINT dengan stty
perintah, mis. stty eof a
akan membuat a
karakter akhir file, dan stty intr ^-
akan menonaktifkan karakter SIGINT. Ini jarang berguna.