首页 > 学院 > 开发设计 > 正文

linux中浅谈信号(一)

2019-11-06 08:35:28
字体:
来源:转载
供稿:网友

      信号是一个通知机制,异步产生,因为低层的硬件异常是由内核异常处理程序处理的,用户进程不可见,信号机制向用户通知异常发生,并记录在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秒后父进程发送信号结束子进程的死循环


发表评论 共有条评论
用户名: 密码:
验证码: 匿名发表