信号
信号源来自:
键盘,操作系统,硬件,kill pid等。
查看系统信号:
kill -l
信号处理:
方式1:缺省处理,就是按照原本操作系统默认的方式处理
方式2:忽略处理,但是SIGKILL 和SIGSTOP不可忽略。
方式3:自己处理,但是SIGKILL 和SIGSTOP不可自行处理。
信号函数:
#include <signal.h>
typedef void (*sighandler_t)(int);
//宏定义sighandler_t指针,指向一个返回值void参数int的函数
sighandler_t signal(int signum, sighandler_t handler);
参数一是信号名,也可是对应的数字,参数二是处理方式
信号小程序:
#include<stdio.h>
#include<stdlib.h>
#include<unistd.h>
#include<signal.h>
void handler(int a) {
printf("无法杀死进程!%d\n", a);
}
typedef void(*handler_t)(int s);
int main() {
handler_t old = NULL;
//这里函数的返回信号处理程序的上一个值,就是old里放的是之前默认信号的值
old = signal(SIGINT, handler);
while (1) {
if (getchar() == '\n')
break;
}
signal(SIGINT, old);
while (1) {
printf("/");
fflush(stdout);
sleep(1);
}
return 0;
}
这篇博客主要介绍了Linux系统的信号,信号源包括键盘、操作系统、硬件及kill命令等。通过查看系统信号,可以了解不同类型的信号。信号处理有三种方式:缺省处理、忽略处理(SIGKILL和SIGSTOP除外)以及自定义处理(SIGKILL和SIGSTOP无法自定义)。此外,还提及了信号函数和信号小程序的概念。
1636

被折叠的 条评论
为什么被折叠?



