56 lines
1.2 KiB
C++
Raw Normal View History

2024-11-23 11:00:35 +00:00
#include <iostream>
#include <unistd.h>
#include <signal.h>
using namespace std;
void func(int signum) {
printf("接收到一个信号 %d\n",signum);
}
int main() {
// 信号的处理
//sighandler_t signal(int signum, sighandler_t handler):
// 信号编号 处理函数
//
// signal(1, SIG_DFL); 对信号1恢复默认处理方式
// signal(1, SIG_IGN); 对信号1忽略
//
//通过发送0的信号可以检测程序是否存活
signal(1, func); //接受1的信号并使用func()处理 注意! func()不要加()
alarm(5); //闹钟, 5秒后向本程序发送14的信号,只有一次
signal(14, func);
// 信号的发送
//int kill(pid_t pid, int sig);
// pid > 0 发送给进程号pid的进程
// pid == 0 发给相同进程组的所有进程
// pid = -1 广播给系统内所有进程
while(1) sleep(1);
return 0;
}
/*
SIGHUP 1 A
-> SIGINT 2 A C + c
SIGFPE 8 C
-> SIGKILL 9 AEF kill -9
SIGSEGV 11 C
SIGPIPE 13 A
-> SIGALRM 14 A alarm()
-> SIGTERM 15 A kill默认
-> SIGCHLD 17 B
A
B
C core dump
D
E
F
*/