相關函數 sigemptyset,sigfillset,sigaddset,sigismember
表頭文件 #include<signal.h>
定義函數 int sigdelset(sigset_t * set,int signum);
函數說明 sigdelset()用來將參數signum代表的信號從參數set信號集裡刪除。
返回值 執行成功則返回0,如果有錯誤則返回-1。
錯誤代碼 EFAULT 參數set指針地址無法存取
EINVAL 參數signum非合法的信號編號
sigemptyset(初始化信號集)
相關函數 sigaddset,sigfillset,sigdelset,sigismember
表頭文件 #include<signal.h>
定義函數 int sigemptyset(sigset_t *set);
函數說明 sigemptyset()用來將參數set信號集初始化並清空。
返回值 執行成功則返回0,如果有錯誤則返回-1。
錯誤代碼 EFAULT 參數set指針地址無法存取
sigfillset(將所有信號加入至信號集)
相關函數 sigempty,sigaddset,sigdelset,sigismember
表頭文件 #include<signal.h>
定義函數 int sigfillset(sigset_t * set);
函數說明 sigfillset()用來將參數set信號集初始化,然後把所有的信號加入到此信號集裡。
返回值 執行成功則返回0,如果有錯誤則返回-1。
附加說明 EFAULT 參數set指針地址無法存取
sigismember(測試某個信號是否已加入至信號集裡)
相關函數 sigemptyset,sigfillset,sigaddset,sigdelset
表頭文件 #include<signal.h>
定義函數 int sigismember(const sigset_t *set,int signum);
函數說明 sigismember()用來測試參數signum 代表的信號是否已加入至參數set信號集裡。如果信號集裡已有該信號則返回1,否則返回0。
返回值 信號集已有該信號則返回1,沒有則返回0。如果有錯誤則返回-1。
錯誤代碼 EFAULT 參數set指針地址無法存取
EINVAL 參數signum 非合法的信號編號
signal(設置信號處理方式)
相關函數 sigaction,kill,raise
表頭文件 #include<signal.h>
定義函數 void (*signal(int signum,void(* handler)(int)))(int);
函數說明 signal()會依參數signum 指定的信號編號來設置該信號的處理函數。當指定的信號到達時就會跳轉到參數handler指定的函數執行。如果參數handler不是函數指針,則必須是下列兩個常數之一:
SIG_IGN 忽略參數signum指定的信號。
SIG_DFL 將參數signum 指定的信號重設為核心預設的信號處理方式。
關於信號的編號和說明,請參考附錄D
返回值 返回先前的信號處理函數指針,如果有錯誤則返回SIG_ERR(-1)。
附加說明 在信號發生跳轉到自定的handler處理函數執行後,系統會自動將此處理函數換回原來系統預設的處理方式,如果要改變此操作請改用sigaction()。
范例 參考alarm()或raise()。
sigpending(查詢被擱置的信號)
相關函數 signal,sigaction,sigprocmask,sigsuspend
表頭文件 #include<signal.h>
定義函數 int sigpending(sigset_t *set);
函數說明 sigpending()會將被擱置的信號集合由參數set指針返回。
返回值執 行成功則返回0,如果有錯誤則返回-1。
錯誤代碼 EFAULT 參數set指針地址無法存取
EINTR 此調用被中斷。
sigprocmask(查詢或設置信號遮罩)
相關函數 signal,sigaction,sigpending,sigsuspend
表頭文件 #include<signal.h>
定義函數 int sigprocmask(int how,const sigset_t *set,sigset_t * oldset);
函數說明 sigprocmask()可以用來改變目前的信號遮罩,其操作依參數how來決定
SIG_BLOCK 新的信號遮罩由目前的信號遮罩和參數set 指定的信號遮罩作聯集
SIG_UNBLOCK 將目前的信號遮罩刪除掉參數set指定的信號遮罩
SIG_SETMASK 將目前的信號遮罩設成參數set指定的信號遮罩。
如果參數oldset不是NULL指針,那麼目前的信號遮罩會由此指針返回。
返回值 執行成功則返回0,如果有錯誤則返回-1。
錯誤代碼 EFAULT 參數set,oldset指針地址無法存取。
EINTR 此調用被中斷
sleep(讓進程暫停執行一段時間)
相關函數 signal,alarm
表頭文件 #include<unistd.h>
定義函數 unsigned int sleep(unsigned int seconds);
函數說明 sleep()會令目前的進程暫停,直到達到參數seconds 所指定的時間,或是被信號所中斷。
返回值 若進程暫停到參數seconds 所指定的時間則返回0,若有信號中斷則返回剩余秒數。
ferror(檢查文件流是否有錯誤發生)
相關函數 clearerr,perror
表頭文件 #include<stdio.h>
定義函數 int ferror(FILE *stream);
函數說明 ferror()用來檢查參數stream所指定的文件流是否發生了錯誤情況,如有錯誤發生則返回非0值。
返回值 如果文件流有錯誤發生則返回非0值。
perror(打印出錯誤原因信息字符串)
相關函數 strerror
表頭文件 #include<stdio.h>
定義函數 void perror(const char *s);
函數說明 perror()用來將上一個函數發生錯誤的原因輸出到標准錯誤(stderr)。參數s所指的字符串會先打印出,後面再加上錯誤原因字符串。此錯誤原因依照全局變量errno的值來決定要輸出的字符串。