Щоб відповісти на ваше друге запитання першим: SIGSTOPі програма SIGKILLне може бути спіймана, але кожен інший сигнал може навіть SIGSEGV. Це властивість корисно для налагодження - наприклад, за допомогою правильної підтримки бібліотеки ви можете слухати SIGSEGVта генерувати зворотній слід стека, щоб показати, де саме відбулося це сегментаріум.
Офіційне слово (так чи інакше для Linux) про те, що робить кожен сигнал, можна отримати, ввівши man 7 signalкомандний рядок Linux. http://linux.die.net/man/7/signal має ту саму інформацію, але таблиці важче читати.
Однак, не маючи досвіду сигналів, важко зрозуміти з коротких описів, що вони роблять на практиці, тому ось моя інтерпретація:
Запускається з клавіатури
SIGINTтрапляється при ударі CTRL+C.
SIGQUITспрацьовує CTRL+\і скидає ядро.
SIGTSTPпризупиняє програму при натисканні CTRL+Z. На відміну від цього SIGSTOP, він доступний для сприйняття, що дає такі програми, як viшанс повернути термінал у безпечний стан, перш ніж призупиняти себе.
Термінальні взаємодії
SIGHUP ("зависання") - це те, що відбувається, коли ви закриваєте xterm (або іншим чином відключаєте термінал) під час роботи програми.
SIGTTINі SIGTTOUпризупиніть свою програму, якщо вона намагається читати або записувати в термінал, поки вона працює у фоновому режимі. Для того, SIGTTOUщоб це сталося, я думаю, що програмі потрібно писати /dev/tty, а не лише типовим stdout.
Запускається виключенням із процесора
Це означає, що ваша програма намагалася зробити щось не так.
SIGILLозначає незаконну чи невідому інструкцію процесора. Це може статися, якщо ви, наприклад, спробували отримати доступ до портів вводу / виводу процесора безпосередньо.
SIGFPEозначає, що сталася помилка з апаратної математики; швидше за все, програма намагалася розділити на нуль.
SIGSEGV означає, що ваша програма намагалася отримати доступ до незробленої області пам'яті.
SIGBUSозначає, що програма якось іншим чином отримала доступ до пам'яті; Я не буду вникати в деталі цього резюме.
Процес взаємодії
SIGPIPEтрапляється, якщо ви спробуєте записати в трубку після того, як зчитувач труб закрив їх кінець. Див man 7 pipe.
SIGCHLDтрапляється, коли дочірній процес, який ви створили, або припиняється, або призупиняється ( SIGSTOPабо схожим).
Корисно для самосигналізації
SIGABRTзазвичай викликається програмою, яка викликає abort()функцію, і за замовчуванням викликає дамп ядра. Сортування "кнопки паніки".
SIGALRMвикликається alarm()системним викликом, який призведе до того, що ядро доставить a SIGALRMпрограмі через задану кількість секунд. Дивіться man 2 alarmі man 2 sleep.
SIGUSR1і SIGUSR2використовуються, проте програма подобається. Вони можуть бути корисні для сигналізації між процесами.
Надіслано адміністратором
Ці сигнали зазвичай надсилаються з командного рядка, через killкоманду, fgабо bgу випадку з SIGCONT.
SIGKILLі SIGSTOPє розблокованими сигналами. Перший завжди припиняє процес негайно; другий призупиняє процес.
SIGCONT відновлює призупинений процес.
SIGTERMце придатна версія SIGKILL.