进程通信之信号的运用

信号的概念:信号在软件层次上对中断机制的一种模拟。是一种异步通信方式,如果该进程当前并未处于执行态,则该信号就由内核保持起来,直到进程恢复执行再传递给它;如果一个信号就被进程设置为阻塞,则该信号的传递被延迟,知道其阻塞被取消时才被传递给进程。

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
");
    }    
      else if (sign_no == SIGQUIT)
      {
          printf("I have get SIGQUIT
");
      }
}
int main()
{
    printf("Waiting for signal SIGINT or SIGQUIT...
");
    /* 如果收到相应的信号,并跳转到信号处理函数处 */
    signal(SIGINT, my_func);
    signal(SIGQUIT, my_func);
    /*pause()函数是用于将调用进程挂起直到捕捉到信号为止*/
    pause();
    exit(0);
}
原文地址:https://www.cnblogs.com/yihujiu/p/5597601.html