看testsig代码,ctrl C 不再终止而是去执行获得信号
man 7 sigal 查看特定符号详细信息,里面有信号的默认动作
后台通过kill -9 pid
当运行一个进程时候,这是前台,再输入命令,子进程没调scanf所以输不到,&变成后台,输入这时候给bash。就能显示,
ctrl C把父子进程同时杀掉,如果父进程先退出,那么子进程自动切后台,那么就杀不掉
ctrl Z 暂停 自动提到后台
键盘按ctrl c,键盘是硬件,操作系统作为硬件管理者,第一个接收到数据,操作系统就给前台发送信号,修改目标进程位图,让这个进程先记下来,后期合适时候处理。默认终止就终止了。
看看mykill代码
通过ctrl c是获取到。。。。也可以通过myshell进程传几号信号,传2是获取到。。。传9是杀掉进程
abort相当于对自定义捕捉去掉会恢复成默认,所以一定会终止程序
除零错误操作系统怎么知道犯错,cpu寄存器内有进程上下文和current进程,其中标志寄存器会记录是否溢出,,此时发送异常信号,就知道什么进程什么错误。
段错误:虚拟地址和CR3寄存器内容给MMU,他去找虚拟到物理的转化,转换失败,硬件报错,操作系统就知道了,知道什么进程什么错误,就报错了。
这都是硬件异常。
管道式软件,读关了那么就触发软件条件。