• Linux编程之信号


    信号是一种软件中断。常驻程序尤其需要注意处理这些信号,如果没有处理,同时也没有了解信号的默认动作,进程可能会莫名其妙的退出或者core。信号早已有之,但在老的操作系统中,可能会出现信号丢失。4.3BSD和SVR3之后增加了可靠信号机制,我们可以放心使用信号机制。本文根据阅读Nginx代码,参考其信号处理机制,结合自己编码中的经验,总结了信号使用方法和注意事项。
    #define SIGHUP		 1
    #define SIGINT		 2
    #define SIGQUIT		 3
    #define SIGILL		 4
    #define SIGTRAP		 5
    #define SIGABRT		 6
    #define SIGIOT		 6
    #define SIGBUS		 7
    #define SIGFPE		 8
    #define SIGKILL		 9
    #define SIGUSR1		10
    #define SIGSEGV		11
    #define SIGUSR2		12
    #define SIGPIPE		13
    #define SIGALRM		14
    #define SIGTERM		15
    #define SIGSTKFLT	16
    #define SIGCHLD		17
    #define SIGCONT		18
    #define SIGSTOP		19
    #define SIGTSTP		20
    #define SIGTTIN		21
    #define SIGTTOU		22
    #define SIGURG		23
    #define SIGXCPU		24
    #define SIGXFSZ		25
    #define SIGVTALRM	26
    #define SIGPROF		27
    #define SIGWINCH	28
    #define SIGIO		29
    #define SIGPOLL		SIGIO
    #define SIGPWR		30
    #define SIGSYS		31
    
    struct sigaction 
    {
        union 
        {
            __sighandler_t _sa_handler;
            
            void (*_sa_sigaction)(int, struct siginfo *, void *);
        } _u;
    
        sigset_t sa_mask;
        
        unsigned long sa_flags;
        
        void (*sa_restorer)(void);
    };
    
    
    下表列出了各信号在Linux(2.4.22)环境中代表的意思,以及信号默认动作:
    名字 说明 ISO C SUS 默认动作
    SIGABRT 异常终止(abort)
    终止+core
    SIGALRM 超时(abort)  
    终止
    SIGBUS 硬件故障  
    终止+core
    SIGCHLD 子进程状态改变  
    忽略
    SIGCONT 使暂停进程继续  
    继续/忽略
    SIGEMT 硬件故障     终止+core
    SIGFPE 算术异常
    终止+core
    SIGHUP 连接断开  
    终止
    SIGILL 非法硬件指令
    终止+core
    SIGINT 终端中断符
    终止
    SIGIO 异步I/O     终止/忽略
    SIGIOT 硬件故障     终止+core
    SIGKILL 终止  
    终止
    SIGPIPE 写至无读进程的管道  
    终止
    SIGPOLL 可轮询事件(POLL)   XSI 终止
    SIGPROF 梗概事件超时(setitimer)   XSI 终止
    SIGPWR 电源失效/重启动   终止/忽略
    SIGQUIT 终端退出符  
    终止+core
    SIGSEGV 无效内存引用
    终止+core
    SIGSTKFLT 协处理器故障 终止
    SIGSTOP 停止
    暂停进程
    SIGSYS 无效系统调用 XSI 终止+core
    SIGTERM 终止
    终止+core
    SIGTRAP 硬件故障 XSI 终止+core
    SIGTSTP 终端停止符
    暂停进程
    SIGTTIN 后台读控制tty
    暂停进程
    SIGTTOU 后台写至控制tty
    暂停进程
    SIGURG 紧急情况(套接字,带外数据)
    忽略
    SIGUSR1 用户自定义的信号
    终止
    SIGUSR2 用户自定义的信号
    终止
    SIGVTALRM 虚拟时间闹钟(setitimer) XSI 终止
    SIGWINCH 终端窗口大小改变 忽略
    SIGXCPU 超过CPU限制(setrlimit) XSI 终止+core/忽略
    SIGXFSZ 超过CPU限制(setrlimit) XSI 终止+core/忽略
    备注:
    A)POSIX.1包含了ISO C标准函数库,同时结构分类两部分:必须部分和可选部分(X/Open系统接口(X/Open System Interface,XSI))。

    B)XSI是POSIX.1中的接口,描述了POSIX中的可选部分。

    C)单一UNIX规范(Single UNIX Specification,缩写为SUS),它是一套UNIX系统的统一规格书。SUS是POSIX的扩展,扩充了POSIX标准,定义了标准UNIX操作系统。只有遵循XSI的实现才能称为UNIX系统。

    D)SUS、POSIX、ISO C的关系,可以总结为 SUS > POSIX > ISO C。
    参考
    1)https://blog.csdn.net/Ada_baby/article/details/44487451
  • 相关阅读:
    mongodb数据库shell
    PLINK pca
    xgboost 安装
    tensorflow之损失函数
    php,mysql存储过程的简单例子
    ECharts初体验
    mysql常用连接查询
    php流程控制
    php循环
    高效率php注意事项
  • 原文地址:https://www.cnblogs.com/motadou/p/11081521.html
Copyright © 2020-2023  润新知