Linux下的进程信号处理过程

信号的产生

信号的产生方式

  • 键盘产生

    • 键盘产生的信号只能发送给前台进程。例如:[Ctrl+C]…
  • 程序异常

    • 除0错误。除0错误会导致硬件错误。
    • core dumped(核心转储):当进程异常退出时,操作系统会将该进程发生异常退出之前在内存中的数据存储至硬盘上。
      • 但是通常发生程序异常退出时,用户并不会发现程序产生了一个core dumped文件,这是因为操作系统当前给用户可产生core file size大小为0,因为core文件的大小不是很小的,所以一般系统会将可产生core文件的大小为0,即通常不产生core文件。
      • ulimit -a:查看系统当前分配给用户设置资源方面的限制条件。
      • core文件前面是core,后面是引起产生该core文件的进程pid。
      • 使用core文件调试代码:在Linux环境下,进入使用gdb调试代码,在gdb内部,使用core-file [core文件名],就会直接定位到引发core文件产生的对应行。
      • 2、9号信号不会产生core文件。
  • 使用kill命令

  • 通过系统调用接口给特定进程发送信号

    • #include<signal.h>
      int kill(pid_t pid, int signo);
      //向特定进程发送特定信号;成功返回0;失败返回-1
      
    • #include<signal.h>
      int raise(int signo);
      //向当前进程发送特定信号;成功返回0;失败返回-1
      
    • #include<stdlib.h>
      void abort(void);
      //使当前进程收到信号而异常终止;就像exit()函数一样,abort()函数总是会成功的,所以没有返回值
      
  • 由软件条件发送信号

    • SIGPIPE:SIGPIPE是一种由软件条件产生的信号,当一个管道的读端被关闭时,这时候操作系统就会

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值