linux中浅谈信号(一)

      信号是一个通知机制,异步产生,因为低层的硬件异常是由内核异常处理程序处理的,用户进程不可见,信号机制向用户通知异常发生,并记录在pcb中用。可以用 kill -l 命令查看,每个信号都有编号和宏定义的名称;1-31 为普通信号,34-64为实时信号。

产生方式:

1、键盘组合键

2、由硬件异常产生信号

3、调用kill()函数,默认动作是终止进程

信号处理:

1、忽略

2、执行默认动作

3、自定义动作:捕捉信号

     

     core dump当一个进程异常中止时,可以选择把进程的用户空间的数据全部保存到磁盘上,生成文件,文件名叫core。可以调试检查core文件查看错误原因。下面是linux命令查看core文件

ulimit -c 返回0表示core文件关闭

ulimit -c 1024 core文件最大为1024k

下面为我写的一个死循环所测试的core文件





     信号发送

头文件:<sys/types.h>

              <signal.h>

  int  kill (pid_t pid ,int  sig)

当pid>0 发送给进程,pid<0发送给进程组的每个进程

  头文件:<unistd.h>

unsignal  int alarm (unsignal  int secs)

alarm函数让内核在secs秒内发送一个SIGALARM信号给所调用的进程,返回值为前一次闹钟剩余的时间

上面的小程序是1秒钟之内不停地数数,1秒钟到了就被SIGALRM信号终⽌止

运行:


下面的小程序是父进程调用kill 函数给子进程发送一个9号信号,kill函数可以给一个指定的进程发送指定的信号。

目的让子进程运行5秒后父进程发送信号结束子进程的死循环




  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值