Jadi, saya memainkan beberapa Zork 1 dan saya pergi untuk menyalin beberapa teks untuk menunjukkan kepada teman saya, tetapi saya tidak sengaja lupa untuk memegang tombol shift ketika menekan CTRL+ C. Ini menghentikan perintah dan saya kehilangan data Zork saya ...
Apakah ada semacam "bermanfaat" tip mereka yang dapat saya gunakan untuk mencegah menghentikan perintah ketika menekan tombol CTRL+ C?
Perhatikan bahwa Zork dijalankan di dalam terminal. Ini adalah permainan berbasis terminal di mana Anda memberi perintah untuk melakukan tindakan yang berbeda.
Jawaban:
Kombinasi tombol Ctrl+ Cmengirimkan karakter
^C
(nilai byte 3). Ini menyebabkan terminal mengirim sinyal SIGINT ke program yang berjalan di latar depan¹. Tindakan konvensional untuk sinyal ini adalah menginterupsi perintah saat ini: program yang dirancang untuk memproses perintah berturut-turut kembali ke prompt tingkat atas, sementara program dirancang sebagai perintah batch tunggal atau keluar interaksi terus menerus. Jelas program yang Anda gunakan dirancang sesuai dengan model kedua.Kunci pengiriman sinyal ini adalah fitur antarmuka terminal umum di kernel, dibagikan oleh semua emulator terminal dan terminal fisik nyata. Anda dapat mengkonfigurasi kunci mana yang mengirim sinyal ini, serta tombol lain (terutama CtrlZmengirim SIGSTOP untuk menunda program latar depan) dengan
stty
perintah. Untuk mengalihkan kunci untuk SIGINT ke Ctrl+ _(di terminal saat ini):Untuk menonaktifkannya sama sekali:
Untuk mengatur ulang semua pengaturan ke default:
Kunci tidak dapat berupa kombinasi kunci arbitrer, itu harus berupa nilai byte tunggal. The
stty
Pengaturan dapat ditimpa oleh program - beberapa program (terutama program mode teks layar penuh) melakukan pengolahan pintas keyboard mereka sendiri.¹ Lebih tepatnya , untuk semua proses dalam kelompok proses latar depan dimana terminal adalah terminal pengendali .
sumber
CTRL+ Cmengirimkan sinyal interupsi (
SIGINT
, yaitu sinyal nomor 2) ke pekerjaan di latar depan. Anda dapat menonaktifkan ini dengan "menjebak" sinyal menggunakantrap '' 2
perintah sebelum memulai Zork.Aktifkan kembali CTRL+ C(membuka bungkusan
SIGINT
) dengantrap 2
.Kiat : Anda dapat menambahkan sesuatu seperti ini ke
~/.bashrc
:Dengan cara ini Anda tidak akan pernah lupa untuk menonaktifkan dan mengaktifkan kembali sinyal dan lebih mudah untuk memulai permainan hanya dengan mengetik
zork
di terminal.Catatan : Anda dapat menggunakan nama sinyal alih-alih nomornya jika lebih nyaman bagi Anda, yaitu
trap '' sigint
atautrap '' int
. Saya hanya terbiasa menggunakan angka-angka, misalnya dalamkill -9
dan semacamnya.sumber