大家好,又见面了,我是你们的朋友全栈君。
#include <stdio.h>
#include <string.h>
#include <stdlib.h>
#include <unistd.h>
#include <sys/types.h>
#include <errno.h>
#include <time.h>
#include <sys/stat.h>
#include <sys/fcntl.h>
#include <syslog.h>
#include <signal.h>
static void signal_handle(int sign)
{
printf(“Test:System signal(%d) received,exit \n”,sign);
exit(0);
}
void signal_oact(int sign)
{
printf(“Test:in signal_oact”);
}
void signal_set()
{
struct sigaction act,old_act;
//act
act.sa_handler = signal_handle;
sigemptyset(&act.sa_mask);
act.sa_flags = 0;
//oact
old_act.sa_handler = signal_oact ;
//
if(sigaction(SIGHUP,&act,&old_act) <0)
{
printf(“FATAL errorfor sigaction in function signal_set \n”);
exit(-1);
}
sigaction(SIGSEGV,&act,NULL);
sigaction(SIGINT,&act,&old_act);
sigaction(SIGTERM,&act,NULL);
sigaction(SIGQUIT,&act,NULL);
return;
}
int main()
{
signal_set();
while(1)
{
printf(“test:waitsignal\n”);
sleep(1);
}
return 0;
}
运行后,执行ctrl+c命令,产生一个SIGINT信号,程序会执行 signal_handle函数
SIGINT信号,程序终止(interrupt)信号,在用户键入INTR字符(通常是Ctrl-C)时发出,用于通知前台进程组终止进程。
发布者:全栈程序员栈长,转载请注明出处:https://javaforall.cn/141109.html原文链接:https://javaforall.cn