进程通信-信号signal

signal:信号
原型:typedef void(*sighandler_t)(int);
        sighandler_t signal(int signum,sighandler_t handler);
        void ( *signal(int signum, void (*handler)(int)) ) (int);
参数:signum指出要设置处理方法的信号handler是一个处理函数,或者是SIG_IGN:忽略参数signum所指的

        信号,或者是SIG_DFL

三种方式处理

signal(SIGINT,SIG_IGN);//SIG_IGN忽略了SIGINT信号:CRTL+C后者DELETE产生
#include<stdio.h>
#include<signal.h>
void main(){
	signal(SIGINT,SIG_IGN);
	for(;;);
	return;
}
signal(SIGINT,SIG_DFL);//系统默认操作,写不写都一样
#include<stdio.h>
#include<signal.h>
void main(){
	signal(SIGINT,SIG_DFL);
	for(;;);
	return;
}

#include <stdio.h>
#include <signal.h>
typedef void (*signal_handler)(int);

void signal_handler_fun(int signum) {
    printf("catch signal %d\n", signum);
}

int main(int argc, char *argv[]) {
	 signal_handler hander_func=signal_handler_fun;
    signal(SIGINT, hander_func);
    while(1);
    return 0;
}


猜你喜欢

转载自blog.csdn.net/linuxzhuxiaodi/article/details/78531950