当前位置: 首页>>代码示例 >>用法及示例精选 >>正文


C++ signal()用法及代码示例


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