Untuk menjawab pertanyaan kedua Anda terlebih dahulu: SIGSTOPdan SIGKILLtidak dapat ditangkap oleh aplikasi, tetapi setiap sinyal lainnya dapat, bahkan SIGSEGV. Properti ini berguna untuk debugging - misalnya, dengan dukungan pustaka yang tepat, Anda bisa mendengarkan SIGSEGVdan membuat stack backtrace untuk menunjukkan di mana segfault itu terjadi.
Kata resmi (untuk Linux, apa pun yang dilakukan setiap sinyal tersedia dengan mengetikkan man 7 signaldari baris perintah Linux. http://linux.die.net/man/7/signal memiliki informasi yang sama, tetapi tabel lebih sulit dibaca.
Namun, tanpa beberapa pengalaman dengan sinyal, sulit untuk mengetahui dari uraian singkat apa yang mereka lakukan dalam praktik, jadi inilah interpretasi saya:
Dipicu dari keyboard
SIGINTterjadi ketika Anda menekan CTRL+C.
SIGQUITdipicu oleh CTRL+\, dan dump inti.
SIGTSTPmenunda program Anda ketika Anda menekan CTRL+Z. Tidak seperti SIGSTOPitu, itu dapat ditangkap, yang memberikan program seperti vikesempatan untuk mengatur ulang terminal ke keadaan aman sebelum menangguhkan diri.
Interaksi terminal
SIGHUP ("hangup") adalah apa yang terjadi ketika Anda menutup xterm (atau memutuskan terminal) saat program Anda sedang berjalan.
SIGTTINdan SIGTTOUjeda program Anda jika mencoba membaca dari atau menulis ke terminal saat sedang berjalan di latar belakang. Agar SIGTTOUterjadi, saya pikir program perlu ditulis /dev/tty, bukan hanya stdout default.
Dipicu oleh pengecualian CPU
Ini berarti program Anda mencoba melakukan sesuatu yang salah.
SIGILLberarti instruksi prosesor yang ilegal atau tidak dikenal. Ini mungkin terjadi jika Anda mencoba mengakses port I / O prosesor secara langsung, misalnya.
SIGFPEberarti ada kesalahan matematika perangkat keras; kemungkinan besar program mencoba membaginya dengan nol.
SIGSEGV berarti program Anda mencoba mengakses wilayah memori yang belum dipetakan.
SIGBUSberarti program mengakses memori dengan cara yang salah; Saya tidak akan membahas detail untuk ringkasan ini.
Interaksi proses
SIGPIPEterjadi jika Anda mencoba menulis ke pipa setelah pembaca pipa menutup ujungnya. Lihat man 7 pipe.
SIGCHLDterjadi ketika proses anak yang Anda buat berhenti atau ditangguhkan (oleh SIGSTOPatau serupa).
Berguna untuk pensinyalan diri
SIGABRTbiasanya disebabkan oleh program yang memanggil abort()fungsi, dan menyebabkan dump inti secara default. Semacam "tombol panik".
SIGALRMdisebabkan oleh alarm()panggilan sistem, yang akan menyebabkan kernel mengirimkan SIGALRMke program setelah beberapa detik. Lihat man 2 alarmdan man 2 sleep.
SIGUSR1dan SIGUSR2bagaimanapun digunakan program suka. Mereka bisa berguna untuk pensinyalan antar proses.
Dikirim oleh administrator
Sinyal-sinyal ini biasanya dikirim dari command prompt, melalui killperintah, atau fgatau bgdalam kasus SIGCONT.
SIGKILLdan SIGSTOPmerupakan sinyal yang tidak dapat diblokir. Yang pertama selalu mengakhiri proses segera; yang kedua menunda proses.
SIGCONT melanjutkan proses yang ditangguhkan.
SIGTERMadalah versi yang dapat ditangkap SIGKILL.