zoukankan      html  css  js  c++  java
  • 对Linux 下 SIGUSR1 与 SIGUSR2 的理解

    学习了网络上的这篇文章:

    http://liyong-zone.blog.sohu.com/102060659.html

    致谢。

    编译的时候用:

    g++ -o testsig.o testsig.cpp

    试着运行了一下:

    [root@localhost test]# cat testsig.cpp
    #include <iostream>
    #include <signal.h>
    using namespace std;
    
    void CatchSigUsr1(int sig)
    {
        cout<<"SIGUSR1 Caught"<<endl;
    }
    
    void CatchSigUsr2(int sig)
    {
        cout<<"SIGUSR2 Caught"<<endl;
        exit(0);
    }
    
    int main()
    {
        signal(SIGUSR1, CatchSigUsr1);
        signal(SIGUSR2, CatchSigUsr2);
        while(1)
        {
            sleep(1);
        }
    }
    [root@localhost test]# 

    就是说 ,从os 级别上如果发kill -s SIGUSR1 或者  kill -s SIGUSR2 ,确实可以激活相应的程序(CatchSigUsr1,CatchSigUsr2)

    也可以改成这样:

    [root@localhost test]# cat testsig.cpp
    #include <iostream>
    #include <signal.h>
    using namespace std;
    
    void CatchSigUsr1(int sig)
    {
        cout<<"SIGUSR1 Caught"<<endl;
    }
    
    void CatchSigUsr2(int sig)
    {
        cout<<"SIGUSR2 Caught"<<endl;
        exit(0);
    }
    
    void sigHandler(int signum)
    {
       if (signum==SIGUSR1)
            CatchSigUsr1(signum);
    
       if (signum==SIGUSR2)
            CatchSigUsr2(signum);
    }
    
    int main()
    {
        signal(SIGUSR1, sigHandler);
        signal(SIGUSR2, sigHandler);
        while(1)
        {
            sleep(1);
        }
    }
    [root@localhost test]# 
  • 相关阅读:
    snaker数据库表说明
    Oracle 导入、导出DMP(备份)文件
    eclipse debug无法启动
    java----事务
    java----单例模式
    java----spring框架
    mybatis----批量增加与批量删除
    web应用程序状态管理
    JavaWeb----servlet
    HTML / CSS----元素分类
  • 原文地址:https://www.cnblogs.com/gaojian/p/2744963.html
Copyright © 2011-2022 走看看