我是靠谱客的博主 凶狠小蝴蝶,最近开发中收集的这篇文章主要介绍linux的SIGUSR1和SIGUSR2信号例子linux的SIGUSR1和SIGUSR2信号例子代码,觉得挺不错的,现在分享给大家,希望可以做个参考。

概述

linux的SIGUSR1和SIGUSR2信号例子

利用SIGUSR1和SIGUSR2在父子进程之间进行消息传递,实现父子进程交替报数(间隔1秒)

  • kill(pid,sig) 发送信号
  • 父子进程捕捉信号

代码

#include <stdio.h>
#include <unistd.h>
#include <stdlib.h>
#include <fcntl.h>
#include <signal.h>
#include <sys/types.h>

pid_t pid;
int count = 0;
int flag = 0;

void cat_sig_father(int num){
    sleep(1);
    flag = 1;
    printf("%dn",count);
    count +=2;
    //kill(pid,SIGUSR2);
}

void cat_sig_child(int num){
    sleep(1);
    flag = 1;
    printf("%dn",count);
    count +=2;
    //kill(getppid(),SIGUSR1);
}

int main(int argc, char const *argv[])
{
    pid = fork();
    if(pid ==0){
        //son
        count = 1;
        signal(SIGUSR2,cat_sig_child);//捕捉SIGUSR2信号
        pid_t ppid = getppid();

        while (1)
        {
            if(flag ==1){
                kill(ppid,SIGUSR1);
                flag = 0;
            }
        }
        
    }else{
        usleep(10);
        count = 2;
        signal(SIGUSR1,cat_sig_father);//捕捉SIGUSR1信号
        kill(pid,SIGUSR2);
        //printf("begin ..n");

        while (1)
        {
            if(flag ==1){
                kill(pid,SIGUSR2);
                flag = 0 ;
            }
        }
        
    }
    return 0;
}

最后

以上就是凶狠小蝴蝶为你收集整理的linux的SIGUSR1和SIGUSR2信号例子linux的SIGUSR1和SIGUSR2信号例子代码的全部内容,希望文章能够帮你解决linux的SIGUSR1和SIGUSR2信号例子linux的SIGUSR1和SIGUSR2信号例子代码所遇到的程序开发问题。

如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。

本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
点赞(42)

评论列表共有 0 条评论

立即
投稿
返回
顶部