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()。非经特殊声明,原始代码版权归原作者所有,本译文未经允许或授权,请勿转载或复制。