进程间通信测试-signal

截图

代码

#include <stdio.h>
#include <unistd.h>
#include <signal.h>
#include <string.h>
#include <assert.h>
#include <stdlib.h>
#include <time.h>
//using namespace std;
int i;
void close_sig_handler(int sig){
    int n = 0;
    srand((unsigned int)time(NULL));
    int A[10] = {-1};
    int Temp = -1;
    while (n<10)
    {
        Temp= rand()%100;
        if(Temp%2 == 1)
        {
            A[n] = Temp;
        }
        else
        {
            A[n] = Temp +1;
        }    
        n++;
    }
    for(int i=0;i<10;i++)
    {
        printf("%d ",A[i]);
    }
    printf("\n");
    exit(0);
}
void quit_sig_handler(int sig)
{
	int n = 0;
    srand((unsigned int)time(NULL));
    int A[10] = {-1};
    int Temp = -1;
    while (n<10)
    {
        Temp= rand()%100;
        if(Temp%2 == 0)
        {
            A[n] = Temp;
        }
        else
        {
            A[n] = Temp +1;
        }    
        n++;
    }
    for(int i=0;i<10;i++)
    {
        printf("%d ",A[i]);
    }
    printf("\n");
    exit(0);
}
int main()
{
    struct sigaction sa;
    sa.sa_handler = close_sig_handler;
    struct sigaction sb;
    sb.sa_handler = quit_sig_handler;
    assert(sigaction(SIGINT,&sa,NULL)!=-1);//捕获到信号sig,使用sa中规定的方法处理
    assert(sigaction(SIGQUIT,&sb,NULL)!=-1);
    i=0;
    while(1){
        //sleep(1);
    }
    i++;
}
posted @ 2022-11-10 09:32  戴骏  阅读(22)  评论(0编辑  收藏  举报