zoukankan      html  css  js  c++  java
  • UNIX环境高级编程第10章信号10.3singal函数

    5Y0(V%)EZP}VG$42A52M30J

    (9%JJPQ~4IS91S$X~A}M)J5

    OR7)$)O{V@75R`(9@L[J3EO

    G2E3OLYRGDOWXWY7M8W_S49

    ]35I@U@6UQBO@XI]FW8BGAD

    AID%)%(OJIESYLT2XDE5M24

    IHEL]{L%342OI0W9BIT6G5V

    UEN1071~@P2LOSFY[D{2]2M

    BF1SZ{6YQ3DH[@SJ%@@P~HG

    CH~ME48Y6TW%L@O]VIB7NZV

    MN7H[]ID6)V{IVS2{AF7]@R

     

    T%LQL$E]56}%U3C)_564Z0N

     

    WHGQWABVDMM~}HY@H~6RNIR

     

    LPDF]}FJ$S}NHXDNL5YM%9A

     

    2DLX90[00)O8)S)P)KK4J0F

     

    I@NE8$JO%$UJ`O(0HBCNC)G

    T3GES}{XO3ZYP94F$G63~(I

    V_]V0F__MJZZDPN~YG1U`K1

    // signals/sigusr.c 10-1
    #include "apue.h"
    
    static void sig_usr(int); /* one handler for both signals */
    
    int main(void)
    {
        if (signal(SIGUSR1, sig_usr) == SIG_ERR)
        {
            err_sys("can't catch SIGUSR1");
        }
        if (signal(SIGUSR2, sig_usr) == SIG_ERR)
        {
            err_sys("can't catch SIGUSR2");
        }
        /* SIGKILL is not available for this function
        if (signal(SIGKILL, sig_usr) == SIG_ERR)
        {
            err_sys("can't catch SIGKILL");
        }
        */
        for ( ; ; )
        {
            pause();
        }
    }
    
    static void sig_usr(int signo) /* argument is signal number */
    {
        if (signo == SIGUSR1)
        {
            printf("received SIGUSR1
    ");
        }
        else if (signo == SIGUSR2)
        {
            printf("received SIGUSR2
    ");
        }
        else
        {
            err_dump("received signal %d
    ", signo);
        }
    }
    
    // lib/signal.c
    #include "apue.h"
    
    /* Reliable version of signal(), using POSIX sigaction().  */
    
    Sigfunc* signal(int signo, Sigfunc *func)
    {
    	struct sigaction	act, oact;
    
    	act.sa_handler = func;
    	sigemptyset(&act.sa_mask);
    	act.sa_flags = 0;
    	if (signo == SIGALRM) {
    #ifdef	SA_INTERRUPT
    		act.sa_flags |= SA_INTERRUPT;
    #endif
    	} else {
    #ifdef	SA_RESTART
    		act.sa_flags |= SA_RESTART;
    #endif
    	}
    	if (sigaction(signo, &act, &oact) < 0)
    		return(SIG_ERR);
    	return(oact.sa_handler);
    }
    

    )ED{1_@UJS37_GI`{RRXAUT

    HXHZ8K2LT2Y@(T1WL1DTW_Y

    062b64fd-18dd-4d06-8729-0098a20a198a

  • 相关阅读:
    css属性操作2(外边距与内边距<盒子模型>)
    css的属性操作1
    css伪类
    属性选择器二
    属性选择器1
    03_MySQL重置root密码
    02_Mysql用户管理之Navicat下载及安装
    18.扩散模型
    17.广播模型
    16.友谊悖论
  • 原文地址:https://www.cnblogs.com/sunyongjie1984/p/4277819.html
Copyright © 2011-2022 走看看