C標準庫參考指南系列譯文(9)signal.h
英文原文:http://www.acm.uiuc.edu/webmonkeys/book/c_guide/2.9.html
原文作者:Eric Huss
中文譯者:柳驚鴻 Poechant
版權宣告:本文的原文版權歸Eric Huss所有,中文譯文版權歸Poechant所有。轉載請註明來自"柳大的CSDN部落格":http://blog.csdn.net/poechant
9. signal.h
標頭檔案signal處理程式執行時產生的訊號的方法。
巨集:
SIG_DFL
SIG_ERR
SIG_IGN
SIGABRT
SIGFPE
SIGILL
SIGINT
SIGSEGV
SIGTERM
函式:
signal();
raise();
變數:
typedef sig_atomic_t
9.1. 變數和定義
型別sig_atomic_t就是int,作為signal函式的handler中的變數。SIG_巨集用於signal函式中用於定義訊號函式。
SIG_DFL |
預設handler。 |
SIG_ERR |
表示錯誤訊號。 |
SIG_IGN |
忽略訊號。 |
SIG巨集代表下列情況下的訊號編號。
SIGABRT |
異常終止(由abort函式產生)。 |
SIGFPE |
浮點錯誤(由零除執行、不合理操作產生)。 |
SIGILL |
非法操作(指令)。 |
SIGINT |
互動訊號(比如我們熟悉的Ctrl-C)。 |
SIGSEGV |
非法儲存訪問(段錯誤,記憶體錯誤)。 |
SIGTERM |
終止請求。 |
9.2. signal
宣告:
void (*signal(int sig, void (*func)(int)))(int);
該函式管理一個訊號應該如何被操控。sig代表與SIG巨集相容的訊號編號。func函式會在訊號產生時被呼叫。如果函式是SIG_DFL,則呼叫預設的handler。如果func是SIG_IGN,則訊號被忽略。如果func指向一個函式,那麼當檢測到一個訊號並執行預設handler時,該函式會被呼叫。函式必須攜帶一個int引數代表訊號編號。函式可能被return,abort,exit,或者longjmp終止。當函式終止時,程式繼續從中斷處執行(除非是結果未定義的訊號SIGFPE)。
如果訊號呼叫成功,則返回指向之前特定訊號型別的handler的指標。如果訊號呼叫失敗,則返回SIG_ERR並且將errno設定一個合理值。
9.3. raise
宣告:
int raise(intsig);
產生sig訊號。sig引數要與SIG巨集相容。
如果呼叫成功,會返回0。否則返回非零值。
例項:
#include<signal.h>
#include<stdio.h>
void catch_function(int);
int main(void)
{
if(signal(SIGINT, catch_function)==SIG_ERR)
{
printf("An error occured while setting a signal handler.\n");
exit(0);
}
printf("Raising the interactive attention signal.\n");
if(raise(SIGINT)!=0)
{
printf("Error raising the signal.\n");
exit(0);
}
printf("Exiting.\n");
return 0;
}
void catch_function(int signal)
{
printf("Interactive attention signal caught.\n");
}
程式執行輸出結果(假設沒有錯誤):
Raising the interactive attention signal.
Interactive attention signal caught.
Exiting.
該系列譯文在持續更新中⋯⋯
C標準庫參考指南系列譯文(1)assert.h
C標準庫參考指南系列譯文(2)ctype.h
C標準庫參考指南系列譯文(3)errno.h
C標準庫參考指南系列譯文(4)float.h
C標準庫參考指南系列譯文(5)limits.h
C標準庫參考指南系列譯文(6)locale.h
C標準庫參考指南系列譯文(7)math.h
C標準庫參考指南系列譯文(8)setjmp.h
C標準庫參考指南系列譯文(9)signal.h
C標準庫參考指南系列譯文(10)stdarg.h
C標準庫參考指南系列譯文(11)stddef.h
C標準庫參考指南系列譯文(12)stdio.h(A)
版權宣告:本文的原文版權歸Eric Huss所有,中文譯文版權歸Poechant所有。轉載請註明來自"柳大的CSDN部落格":http://blog.csdn.net/poechant
-
相關文章
- C標準庫參考指南系列譯文
- C標準庫參考指南系列譯文(11)stddef.h
- C標準庫參考指南系列譯文(10)stdarg.h
- C標準庫參考指南譯文系列(8)setjmp.h
- C標準庫參考指南系列譯文(7)math.h
- C標準庫參考指南系列譯文(6)locale.h
- C標準庫參考指南系列譯文(5)limits.hMIT
- C標準庫參考指南系列譯文(4)float.h
- C標準庫參考指南系列譯文(3)errno.h
- C標準庫參考指南系列譯文(2)ctype.h
- C標準庫參考指南系列譯文(1)assert.h
- C標準庫參考指南系列譯文(12)stdio.h(A)
- 轉 《五蠹》參考譯文
- POCO庫中文程式設計參考指南(9)Poco::Net::DNS程式設計DNS
- SR 提交email 標準格式 --- 供參考AI
- 軟體測試BUG參考標準
- C 標準庫 -
- C++標準庫、C++標準模版庫介紹C++
- 前端參考指南前端
- C++標準庫C++
- BOOST庫 學習參考完全開發指南
- c/c++ 標準庫 vectorC++
- 找java培訓機構有哪些參考標準Java
- C標準庫學習
- - C語言標準庫C語言
- C++標準庫:chronoC++
- C++標準庫:randomC++random
- Elasticsearch 參考指南(介紹)Elasticsearch
- C 標準庫 – ctype.h
- C++標準模板庫------容器C++
- C++標準庫::拾遺C++
- POCO庫中文程式設計參考指南(1)總覽程式設計
- 什麼是 C 和 C ++ 標準庫?
- c/c++ 標準庫 map set 插入C++
- c/c++ 標準庫 迭代器(iterator)C++
- HTML標籤參考(一)HTML
- #region(C# 參考)C#
- Spring Boot 參考指南(Hazelcast)Spring BootAST