C++ 中的signal() 函數設置指定信號的錯誤處理程序。
signal() 原型
void (*signal (int sig, void (*func)(int)))(int);
signal
函數定義了處理信號的方法。可以設置信號處理程序,以便執行以下操作之一:
- 信號的默認處理。
- 忽略信號。
- 調用用戶定義的函數來處理信號。
它在<csignal> 頭文件中定義。
參數:
sig
: 由信號處理程序處理的信號。它可以采用以下值之一:- SIGABRT
- SIGFPE
- SIGILL
- SIGINT
- SIGSEGV
- SIGTERM
handler
: 處理信號的信號處理器。它可以是以下之一:- SIG_DFL:默認處理。
- SIG_IGN:忽略信號。
- 指向函數的指針:用於處理信號的用戶定義函數。函數的簽名必須等同於以下內容:
void fun(int sig);
返回:
成功時,它返回先前的信號處理程序,失敗時返回SIG_ERR。
示例:signal() 函數的工作原理
#include <iostream>
#include <csignal>
using namespace std;
sig_atomic_t signalled = 0;
void handler(int sig)
{
signalled = 1;
}
int main()
{
signal(SIGINT, handler);
raise(SIGINT);
if (signalled)
cout << "Signal is handled";
else
cout << "Signal is not handled";
return 0;
}
運行程序時,輸出將是:
Signal is handled
相關用法
- C++ signbit()用法及代碼示例
- C++ sinh()用法及代碼示例
- C++ complex sinh()用法及代碼示例
- C++ sin()用法及代碼示例
- C++ std::max()用法及代碼示例
- C++ std::string::push_back()用法及代碼示例
- C++ std::less_equal用法及代碼示例
- C++ set rbegin()用法及代碼示例
- C++ string::length()用法及代碼示例
- C++ set upper_bound()用法及代碼示例
- C++ set crbegin用法及代碼示例
- C++ std::is_member_object_pointer模板用法及代碼示例
- C++ std::copy_n()用法及代碼示例
- C++ std::string::insert()用法及代碼示例
- C++ std::is_sorted_until用法及代碼示例
- C++ std::iota用法及代碼示例
- C++ set size用法及代碼示例
- C++ std::numeric_limits::digits用法及代碼示例
- C++ sscanf()用法及代碼示例
- C++ std::string::data()用法及代碼示例
注:本文由純淨天空篩選整理自 C++ signal()。非經特殊聲明,原始代碼版權歸原作者所有,本譯文未經允許或授權,請勿轉載或複製。