zoukankan      html  css  js  c++  java
  • c/c++ linux 进程间通信系列1,使用signal,kill

    linux 进程间通信系列1,使用signal,kill

    信号基本概念:  软中断信号(signal,又简称为信号)用来通知进程发生了异步事件。进程之间可以互相通过系统调用kill发送软中断信号。内核也可以因为内部事件而给进程发送信号,通知进程发生了某个事件。注意,信号只是用来通知某进程发生了什么事件,并不给该进程传递任何数据。

    kill函数的详细说明:kill

    信号接收端:

    #include <stdio.h>
    #include <signal.h>
    #include <unistd.h>//write function
    
    int flag = 0;
    
    void sigusr1_handler(int sig){
      printf("sig : %d
    ", sig);
    
      write(1, "signal called
    ",14);
      flag = 1;
    }
    
    int main(){
      printf("pid=%d
    ", getpid());
      signal(SIGUSR1, sigusr1_handler);
      while(1){
        printf("waiting for signal
    ");
        sleep(5);
        if(flag != 0){
          printf("break loop
    ");
          break;
        }
      }
      return 0;
    }
    
    

    github源代码

    信号发送端:

    #include <stdio.h>
    #include <signal.h>
    #include <stdlib.h>
    
    int main(int argc, char* argv[]){
      int retval;
      pid_t pid = atoi(argv[1]);
      
      retval = kill(pid,SIGUSR1);
                
      if ( retval )
        {
          perror( "kill" );
        }
      else
        {
          printf( "%d killed
    ", pid );
        }
    }
    
    

    github源代码

    在命令行里使用kill命令给信号接收端,发送信号也可以。

    kill -s SIGUSR1 程序的PID
    

    c/c++ 学习互助QQ群:877684253

    本人微信:xiaoshitou5854

  • 相关阅读:
    MySQL-sql语句
    常见IP端口
    Java开发异常
    微信开发-charles抓包
    6、分组查询
    5、关联查询
    4、查询
    3、表的管理
    2、用户管理
    1、oracle基本使用
  • 原文地址:https://www.cnblogs.com/xiaoshiwang/p/9813815.html
Copyright © 2011-2022 走看看