信号的基本概念:
进程间常用的通信手段:发送信号, kill..
SIGHUP
信号:通知, 事件通知, 用来通知某个进程发生了一个事情
事件, 信号都是突发的, 信号是异步发生的,也叫软件中断
信号的产生:
a)某个进程发送给另一个进程或者发送给自己
b)由内核发送给某个进程
1)在键盘上输入命令ctrl+c 中断信号, kill命令
2)内存访问异常,除数为0, 硬件都会检测到并且通知内核
信号的名字:一般以SIG开头 例如:SIGHUP(终端断开信号)
unix以及类unix操作系统:支持的信号各不相同10-60个之间;
信号既有名字, 也是一些数字, 信号是一些正整数常量
#include<signal.h> (/usr/include)
gcc搜索路径:
头文件, 包含路径:/user/local/include/ /usr/include/
库文件, 连接路径: /usr/local/lib/ /usr/lib
// sudo find / -name "signal" | xargs grep -in "SIGHUP
根目录 要找的东西 给其他命令传参 忽略大小写,显示行号
用了xargs就是在“signal”内容中搜索
kill : kill 进程id(他的工作是发个信号给进程)可以给进程发送多种信号;
kill -1 进程ID (1其实就是sighup)
进程的状态:加上stat
ps -eo pid,ppid,sid,tty,pgrp,comm,stat | grep -E 'bash|PID|nginx'
信号处理常见动作:
(1)执行系统默认动作, 绝大多数默认动作都是杀死这个进程
(2)忽略此信号 SIG_ING:signal(SIGHUP, SIG_IGN);
(3)捕捉该信号:写个处理函数,信号来的时候,用该函数进行处理