• [国嵌攻略][082][信号通讯编程]


    信号

    在Linux系统中,信号(signal)是一种事件通知的进程通讯方式。

    信号处理流程

    1.进程A选择信号

    2.进程A发送信号给进程B

    3.进程B接收信号

    信号类型

    Linux系统支持的所有信号都定义在/usr/include/asm/signal.h中,其中常见的信号有:

    SIGKILL:杀死进程

    SIGSTOP:暂停进程

    SIGCHLD:子进程停止或结束时用来通知父进程

    通过kill命令可以给进程发送信号

    例如:kill -n SIGINT PID

    A.c

    #include <sys/types.h>
    #include <signal.h>
    
    int main(int argc, char **argv){
        //参数检查
        if(argc != 2){
            return -1;
        }
        
        //参数转换
        int pid;
        
        pid = atoi(argv[1]);
        
        //发送信号
        kill(pid, SIGINT);
        
        return 0;
    }

    B.c

    #include <stdio.h>
    #include <signal.h>
    #include <unistd.h>
    
    void print(int arg);
    
    void main(){
        //设置信号
        signal(SIGINT, print);
        
        //等待信号
        pause();
    }
    
    void print(int arg){
        printf("Process B recevied SIGINT!
    ");
    }
  • 相关阅读:
    linux运维、架构之路-MySQL主从复制
    多线程
    IO
    查看信息
    乱码
    字节流与字符流
    file
    JDBC
    规范
    Java常用包
  • 原文地址:https://www.cnblogs.com/d442130165/p/5224757.html
Copyright © 2020-2023  润新知