LINUX_C_SIGNAL

學習linux下c編程的信號這一章,做一做筆記吧。
常用的4個發出信號的系統函數kill,raise,alarm,setitimer。
kill向指定的進程發送信號
raise向自己發送sig信號
alarm是定時器,等規定時間到了向自己發送SIGALRM信號。
setitimer,設置一段時間使得程序間隔執行。(具體沒用過,不說很瞭解)

信號操作

函數 解釋
int sigemptyset(sigset_t *set) 初始化信號set,將其設爲空
int sigfillset(sigset_t *set) 初始化set,將其設爲所有信號的集合
int sigaddset(sigset_t *set,int signo) 將signo加入set集合中
int sigdelset(sigset_t *set,int signo) 將signo從set中刪除
int sigismember(sigset_t *set,int signo) 查詢signo是否在set中
int sigprocmask(int how,const sigset_t *set,sigset_t *oset) 將指定信號集合加入進程阻塞集合中,oset是保存原來的阻塞集合,一般爲null,how是函數操作方式,SIG_BLOCK:增加信號集合到當前隊列中;SIG_UNBLOCK:從當前阻塞集合中刪除一個信號集合;SIG_SETMASK:設置當前信號集合爲阻塞集合
int sigaction(int signo,const struct sigaction *act,struct sigaction *oact) 重定義信號發送的動作,同上,act爲添加的動作,oact爲被替換保存的動作
int pause(void ) 掛起當前進程直到信號發生
int sigsuspend(const sigset_t *sigmask) 掛起進程,調用的時候用sigmask取代當前阻塞集合

struct sigaction{
void (*sa_handler)(int signo);
void (*sa_sigaction)(int siginfo_t *info,void *act);
sigset_t sa_mask;
int sa_flags;
void (*sa_restore)(void);
}

注:signo中信號查看man 7 signal
關於這個,這位博主講的比較詳細:http://www.cnblogs.com/huyc/archive/2011/10/20/2218352.html

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