10_18 用sigaction實現signal函數

除非設置了SA_RESTART標誌,否則sigaction函數不再重啓動被中斷的系統調用。

一、源代碼:

vim 10_18.c
#include "apue.h"
Sigfunc * singnal(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
                act.sa_flags |= SA_RESTART;


        if (sigaction(signo,&act,&oact) < 0)
                return (SIG_ERR);
        return (oact.sa_handler);
}
~
~

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章