#include <sys/types.h>
#include <signal.h>
int kill(pid_t pid, int signum)
功能:
- 給指定進程發送信號
參數:
- pid:
- pid>0:將信號傳送給進程ID爲pid的進程
- pid=0:將信號傳送給當前所在進程組中的所有進程
- pid=-1:將信號傳送給系統內所有進程
- pid<-1將信號傳給指定進程組|pid|的所有進程。
- signum:信號編號
返回值:
- 成功返回0,失敗返回-1
#include <unistd.h>
unsigned int alarm(unsigned int seconds)
功能:
- 在 seconds秒後,向調用進程發送一個SIGALRM信號, SIGALRM信號的默認動作是終止調用 alarm函數的進程。
參數:
- seconds:延遲秒數
返回值:
- 若以前沒有設置過定時器,或設置的定時器已超時,返回0;否則返回定時器剩餘的秒數,並重新設定定時器。
#include <signal.h>
int raise(int signum)
功能:
- 給調用進程本身發送一個信號
參數:
- signum:信號的編號
返回值:
- 成功返回0
- 失敗返回-1
#include <unistd.h>
int pause(void)
功能:
- 將調用進程掛起直至捕捉到信號爲止。這個函數通常用於判斷信號是否已到。
返回值:
- 直到捕獲到信號, pause函數才返回-1,且errno被設置成EINTR。
#include <stdlib.h>
void abort(void)
功能:
- 向進程發送一個 SIGABRT信號,默認情況下進程會退出。
注意:
- 即使 SIGABRT信號被加入阻塞集,一旦進程調用了 abort函數,進程也還是會被終止,且在終止前會刷新緩衝區,關文件描述符。
#include <signal.h>
typedef void(*sighandler_t)(int)
sighandler_t signal(int signum, sighjandler_t handler);
功能:
- 註冊信號處理函數(除了 SIGKILL信號、 SIGSTOP信號),即確定收到信號後處理函數的入口地址
參數:
- sIgnum:信號編號
- handler:
- 忽略該信號:SIG_IGN
- 執行系統默認動作:SIG_DFL
- 自定義信號處理函數:處理函數名
返回值:
- 成功:返回函數地址,該地址爲此信號上一次註冊的信號處理函數的地址。
- 失敗:返回SIGERR
#include <signal.h>
int sigemptyset(sigset_t *set)
功能:
- 初始化由set指向的信號集,清除其中所有的信號即初始化—個空信號集
參數:
- set:信號集標識的地址,以後操作此信號集,對se迸行操作就可以了。
返回值:
- 成功返回0
- 失敗返回-1
#include <signal.h>
int sigfillset(sigest_t *set)
功能:
- 初始化信號集合set將信號集合設置爲所有信號的集合。
參數:
- set:信號集標識的地址,以後操作此信號集,對set進行操作就可以了。
返回值:
- 成功返回0
- 失敗返回-1
#include <signal.h>
int sigismember(sigest_t *set, int signum)
功能:
- 查詢 signum標識的信號是否在信號集合set之中參數
參數:
- set:信號集標識符號的地址
- signum:信號的編號
返回值:
- 在信號集中返回1
- 不在信號集中返回0
- 錯誤,返回-1
#include <signal.h>
int sigaddset(sigest_t *set, int signum)
功能:
- 將信號signum加入到信號集合set之中。
參數:
- set:信號集標識的地址
- signum:信號的編號
返回值:
- 成功返回0
- 失敗返回-1
#include <signal.h>
int sigdelset(sigest_t *set, int signum)
功能:
- 將 signum所標識的信號從信號集合set中刪除。
參數:
- set:信號集標識的地址
- signum:信號的編號
返回值:
- 成功返回0
- 失敗返回-1
#include <signal.h>
int sigprocmask(int how, const sigest_t *set, sigset_t *oldset)
功能:
- 檢査或修改信號阻塞集,根據how指定的方法對進程的阻塞集合進行修改,新的信號阻塞集由se指定,而原先的信號阻塞集合由 oldset保存。
參數:
- how:信號阻塞集合的修改方法
- SIG_BLOCK:向信號阻塞集合中添加set信號集
- SIG_UNBLOCK:從信號阻塞集合中刪除set集合
- SIG_SETMASK:將信號阻塞集合設爲set集合
- set:要操作的信號集地址
- oldest:保存原先信號集地址
返回值:
- 成功返回0
- 失敗返回-1
#include <signal.h>
int sigqueue(pid_t pid, int sig, const union sigval value)
功能:
- 給指定進程發送信號
參數:
-
pid:信號
-
sig:信號的編號
-
value:通過信號傳遞的參數
-
union sigval{ int sival_int; void *sival_ptr; }
-
返回值:
- 成功返回0
- 失敗返回-1
#include <signal.h>
int sigaction(int signum, const struct sigaction *act, struct sigaction *oldact)
功能:
- 檢査或修改指定信號的設置或同時執行這兩種操作。
- 如果act指針非空,則要改變指定信號的設置;如果 oldact指針非空,則系統將此前指定信號的設置存入 oldact。
參數:
- sIgnum:信號編號
- act:新的信號設置指針
- oldact:舊的信號設置指針
返回值:
- 成功返回0
- 失敗返回-1
void (*sa_sigaction)(int signum, siginfo_t *info, void *context)
參數:
- sIgnum:信號的編號
- info:記錄信號發送進程信息的結構體
- context:可以賦給指向 ucontext_t類型的一個對象的指針,以引用在傳遞信號時被中斷的接收進程或線程的上下文