内核中几个用于信号产生的函数:
specific_send_sig_info():向进程发送信号
group_send_sig_info():向进程组发送信号
send_signal(): 将信号插入挂起信号队列
specific_send_sig_info()
向t发送信号sig
参数
- sig
信号ID
- info
信号的附加信息
- t
进程描述符
其中,参数info
可能的取值如下:
值 | 意义 |
---|---|
(siginfo_t) | info是指向siginfo_t结构的指针 |
0 | 信号由用户发送 |
1 | 信号由内核发送 |
2 | 信号由内核发送,且信号是:SIGSTOP或SIGKILL |
复杂性
t阻塞这个信号
t被跟踪
sig是实时信号
sig已经挂起在t的pending列表上
sig必须插入到t的pending列表上,并且这个过程可能失败
内核需要通知t有新的挂起信号
TIF_SIGPENDING需要被置位