首页 > 代码库 > 一、进程与信号之信号的概念
一、进程与信号之信号的概念
信号:进程与进程之间通讯机制
信号是软件中断
信号是异步事件
信号来源:内核产生,常用信号kill(),raise(),alarm(),settimer()等
kill -l
查看linux所有 信号共64个 1-31 非实时信号发送信号可能回丢失,不支持信号排队
32-64实时信号
进程处理信号:
忽略信号
SIGKILL和SIGSTOP永远不能被忽略
忽略硬件异常
进程启动时SIGUSER1和SIGUSER2两个信号被忽略
执行默认操作
每个信号都有默认动作,大部分信号动作是终止信号
捕获信号
告诉信号内核出现信号是调用自己处理函数
SIGKILL和SIGSTOP不能被捕获
signal函数信号注册函数void (*signal(int signo,void(*func)(int)))(int);参数signo 要登记的信号值1-64func 信号处理函数指针/忽略信号SIG_IGN/默认信号SIG_DEL若成功返回信号处理函数指针,否则返回SIG_ERR
范列
#include <unistd.h>#include <stdlib.h>#include <signal.h>#include <stdio.h>void set_signal(int signo){ printf("pid: %d,signo: %d\n",getpid(),signo);}int main(){ //SIGTSTP就是ctrl + z if(signal(SIGTSTP,set_signal) == SIG_ERR) { printf("set signal error"); } //ctrl+c if(signal(SIGINT,set_signal) == SIG_ERR) { printf("set signal error"); } int i=0; while(i<30) { printf("i : %d\n",i++); sleep(1); } return 0;}
一、进程与信号之信号的概念
声明:以上内容来自用户投稿及互联网公开渠道收集整理发布,本网站不拥有所有权,未作人工编辑处理,也不承担相关法律责任,若内容有误或涉及侵权可进行投诉: 投诉/举报 工作人员会在5个工作日内联系你,一经查实,本站将立刻删除涉嫌侵权内容。