9,19号信号不能捕捉,不能忽略,甚至不能阻塞
阻塞信号集[要屏蔽的信号]影响未决信号集[没有处理的信号集合]
信号四要素
信号的特点
信号的处理方式
终端按键产生信号
- Ctrl+c ->2)SIGINT(终止/中断) "INT" ----Interrrupt
- Ctrl+z ->20)SIGTSTP(暂停/停止) "T" ----Terminal 终端
- Ctrl+\ ->3)SIGQUIT(退出)
硬件异常产生信号
- 除 0 操作 ->8)SIGFPE(浮点数例外) "F"-----float浮点数
- 非法访问内存 ->11)SIGSEGV(段错误)
- 总线错误 ->7)SIGBUS
int kill(pid_t pid,int sig);
pid 大于0,要发送进程ID
pid 等于0,代表当前调用进程组内所有进程
pid 等于-1,代表有权限发送的所有进程
pid 小于0,代表-pid对应的组内所有进程
sig 对应的信号
raise给自己发送信号
int raise(int sig);
abort给自己发送信号 SIGABRT
void abort(void);
int main()
{
int i = 0;
pid_t pid3,pid;
for (i = 0; i < 5; ++i) {
pid = fork();
if(pid == 0)
break;
if(i == 2)
pid3 == pid;
}
if (i < 5) {
while(1)
{
printf("I am child,pid=%d,ppid=%d\n",getpid(),getppid());
sleep(1);
}
}else if(i == 5)
{
printf("I am parent,pid = %d,I will kill xiao san pid=%d\n",getpid(),pid3);
sleep(5);
kill(pid3,SIGKILL);
while (1) {
sleep(1);
}
}
return 0;
}