常见信号
- SIGTERM
- SIGSEGV
- SIGINT
- SIGILL
- SIGABRT
- SIGFPE
Defined in header <signal.h>
#define SIGTERM /*implementation defined*/
#define SIGSEGV /*implementation defined*/
#define SIGINT /*implementation defined*/
#define SIGILL /*implementation defined*/
#define SIGABRT /*implementation defined*/
#define SIGFPE /*implementation defined*/
解释
SIGTERM
- 程序结束(terminate)信号,与SIGKILL不同的是该信号可以被阻塞和处理。通常用来要求程序自己正常退出。
- iOS中一般不会处理到这个信号
SIGSEGV
- invalid memory access (segmentation fault)
- 无效的内存地址引用信号(常见的野指针访问)
- 非ARC模式下,iOS中经常会出现在 Delegate对象野指针访问
- ARC模式下,iOS经常会出现在Block代码块内 强持有可能释放的对象
SIGINT
- external interrupt, usually initiated by the user
- 通常由用户输入的整型中断信号
- 在iOS中一般不会处理到该信号
SIGILL
- invalid program image, such as invalid instruction
- 不管在任何情况下得杀死进程的信号
- 由于iOS应用程序平台的限制,在iOS APP内禁止kill掉进程,所以一般不会处理
SIGABRT
- abnormal termination condition, as is e.g. initiated by abort()
- 通常由于异常引起的中断信号,异常发生时系统会调用abort()函数发出该信号
- iOS平台,一种是由于方法调用错误(调用了不能调用的方法)
- iOS平台,一种是由于数组访问越界的问题
SIGFPE
- erroneous arithmetic operation such as divide by zero
- 浮点数异常的信号通知
- 一般是由于 除数为0引起的