Để trả lời câu hỏi thứ hai của bạn trước: SIGSTOPvà SIGKILLứng dụng không thể bị bắt, nhưng mọi tín hiệu khác đều có thể, thậm chí SIGSEGV. Thuộc tính này hữu ích cho việc gỡ lỗi - ví dụ, với sự hỗ trợ của thư viện phù hợp, bạn có thể lắng nghe SIGSEGVvà tạo một backtrace ngăn xếp để hiển thị nơi xảy ra lỗi segfault đó.
Từ chính thức (đối với Linux, dù sao) về những gì từng tín hiệu có sẵn bằng cách nhập man 7 signaltừ một dòng lệnh Linux.  http://linux.die.net/man/7/signal có cùng thông tin, nhưng các bảng khó đọc hơn.
Tuy nhiên, không có một số kinh nghiệm về tín hiệu, thật khó để biết từ những mô tả ngắn về những gì họ làm trong thực tế, vì vậy đây là cách giải thích của tôi:
Kích hoạt từ bàn phím
- SIGINTxảy ra khi bạn nhấn- CTRL+C.
- SIGQUITđược kích hoạt bởi- CTRL+\, và bãi bỏ lõi.
- SIGTSTPđình chỉ chương trình của bạn khi bạn nhấn- CTRL+Z. Không giống như- SIGSTOP, nó có thể bắt được, điều này mang lại cho các chương trình như- vicơ hội đặt lại thiết bị đầu cuối về trạng thái an toàn trước khi tạm dừng.
Tương tác đầu cuối
- SIGHUP("Hangup") là những gì xảy ra khi bạn đóng xterm của bạn (hoặc nếu không thì ngắt kết nối thiết bị đầu cuối) trong khi chương trình của bạn đang chạy.
- SIGTTINvà- SIGTTOUtạm dừng chương trình của bạn nếu nó cố đọc hoặc ghi vào thiết bị đầu cuối trong khi nó đang chạy ẩn. Để- SIGTTOUxảy ra, tôi nghĩ rằng chương trình cần phải được viết- /dev/tty, không chỉ là thiết bị xuất chuẩn mặc định.
Kích hoạt bởi một ngoại lệ CPU
Điều này có nghĩa là chương trình của bạn đã cố gắng làm điều gì đó sai.
- SIGILLcó nghĩa là một hướng dẫn bộ xử lý bất hợp pháp hoặc không xác định. Điều này có thể xảy ra nếu bạn cố truy cập trực tiếp vào cổng I / O của bộ xử lý.
- SIGFPEcó nghĩa là đã có một lỗi toán học phần cứng; rất có thể chương trình đã cố gắng chia cho số không.
- SIGSEGVcó nghĩa là chương trình của bạn đã cố gắng truy cập vào một vùng bộ nhớ chưa được khai thác.
- SIGBUScó nghĩa là chương trình truy cập bộ nhớ không chính xác theo một cách khác; Tôi sẽ không đi vào chi tiết cho bản tóm tắt này.
Quá trình tương tác
- SIGPIPExảy ra nếu bạn cố gắng ghi vào một đường ống sau khi đầu đọc của ống đóng lại. Xem- man 7 pipe.
- SIGCHLDxảy ra khi một tiến trình con bạn tạo hoặc thoát hoặc bị đình chỉ (bởi- SIGSTOPhoặc tương tự).
Hữu ích cho việc tự báo hiệu
- SIGABRTthường được gây ra bởi chương trình gọi- abort()hàm và gây ra kết xuất lõi theo mặc định. Sắp xếp một "nút hoảng loạn".
- SIGALRMđược gây ra bởi lệnh- alarm()gọi hệ thống, điều này sẽ khiến kernel phân phối a- SIGALRMđến chương trình sau một số giây được chỉ định. Xem- man 2 alarmvà- man 2 sleep.
- SIGUSR1và- SIGUSR2được sử dụng tuy nhiên chương trình thích. Chúng có thể hữu ích cho tín hiệu giữa các quá trình.
Gửi bởi quản trị viên
Các tín hiệu này thường được gửi từ dấu nhắc lệnh, thông qua killlệnh fghoặc bgtrong trường hợp SIGCONT.
- SIGKILLvà- SIGSTOPlà những tín hiệu không thể chặn được. Việc đầu tiên luôn chấm dứt quá trình ngay lập tức; thứ hai đình chỉ quá trình.
- SIGCONTnối lại một quá trình bị đình chỉ.
- SIGTERMlà một phiên bản có thể bắt được của- SIGKILL.