通过脚本向指定的进程发送信号SIGUSR1

    1. #!/bin/sh
    2. ps | grep application_name | grep -v grep | awk '{print $1}' | xargs kill -SIGUSR1

    所对应的C++代码,用来实现在接收到SIGUSR1的时候,程序退出

    #include <csignal>
    #include <iostream>
    #include "applicationMain.h"
    
    bool stopFlag;
    
    void stopMainServer(int signal)
    {
        stopFlag = true;
    }
    
    int main()
    {
      stopFlag = false;
      std::signal(SIGUSR1, stopMainServer);
      applicationMain main_proc;
      main_proc.startMain();
    
      while(true) {
        sleep(1);
    
        if (stopFlag)
        {
            break;
        }
      }
    
      // TODO: Add shutdown signal/event to stop mock-server.
      main_proc.stopMocks();
      std::cout << "Stop the Main Server" << std::endl;
      return 0;
    }
    

    当主程序因为异常而退出时,这段程序可能会产生孤儿进程。

    C++可以接收以下信号
    image.png