C++實現(xiàn)文件更改提示

字號:

代碼如下:
    #include
    #include
    #include
    /*static volatile atomic variable*/
    static volatile sig_atomic_t sigflag = 0;
    /*private signal control handler*/
    static void TurnFlag(int no){
    sigflag = (sigflag == 0) ? 1 : 0;
    }來源:考試大網(wǎng)
    /**
    * set signal handler
    * if error return -1
    * or return 0
    */
    int InitHandler(int signo){ /*signal macro*/
    /*using sigaction function need this struct*/
    struct sigaction act;
    act.sa_handler = TurnFlag; /*set signal function*/
    act.sa_flags = 0;/*meaning sigaction is pure action*/
    if( (sigemptyset(&act.sa_mask) == -1) || /*get empty mask*/
    (sigaddset(&act.sa_mask,signo) == -1) ||/*add signo into mark*/
    (sigaction(signo,&act,NULL) == -1) ) /*execute function*/
    return -1;
    return 0;
    }
    /*control signal,main method is suspeed signal and restore signal
    * if error return -1,or return 0*/
    int ControlSig(int signo){
    /*actunblock variable mean no block mask
    * actblock variable meaning need to block mask
    * actold is original mask for restore
    * */
    sigset_t actunblock,actblock,actold;
    if( (sigprocmask(SIG_SETMASK,NULL,&actunblock) == -1) ||
    (sigprocmask(SIG_SETMASK,NULL,&actblock) == -1) ||
    (sigaddset(&actblock,signo) == -1) ||
    (sigdelset(&actunblock,signo) == -1) ||
    (sigprocmask(SIG_BLOCK,&actblock,&actold) == -1) )
    return -1;