进程通信之信号的运用
信号的概念:信号在软件层次上对中断机制的一种模拟。是一种异步通信方式,如果该进程当前并未处于执行态,则该信号就由内核保持起来,直到进程恢复执行再传递给它;如果一个信号就被进程设置为阻塞,则该信号的传递被延迟,知道其阻塞被取消时才被传递给进程。
signal()函数处理信号
代码分析:
/* signal.c */ #include <signal.h> #include <stdio.h> #include <stdlib.h> void my_func(int sign_no) /*自定义信号处理函数*/ { if (sign_no == SIGINT) { printf("I have get SIGINT\n"); } else if (sign_no == SIGQUIT) { printf("I have get SIGQUIT\n"); } } int main() { printf("Waiting for signal SIGINT or SIGQUIT...\n"); /* 如果收到相应的信号,并跳转到信号处理函数处 */ signal(SIGINT, my_func); signal(SIGQUIT, my_func); /*pause()函数是用于将调用进程挂起直到捕捉到信号为止*/ pause(); exit(0); }