歡迎來到Linux教程網
Linux教程網
Linux教程網
Linux教程網
Linux教程網 >> Linux基礎 >> Linux教程 >> linux常用c函數:信號處理篇(三)

linux常用c函數:信號處理篇(三)

日期:2017/2/25 10:38:48   编辑:Linux教程
 sigdelset(從信號集裡刪除一個信號)

  相關函數 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的值來決定要輸出的字符串。

Copyright © Linux教程網 All Rights Reserved