歡迎來到Linux教程網
Linux教程網
Linux教程網
Linux教程網
您现在的位置: Linux教程網 >> UnixLinux >  >> Linux基礎 >> Linux教程

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

 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