當前位置: 首頁>>代碼示例 >>用法及示例精選 >>正文


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()。非經特殊聲明,原始代碼版權歸原作者所有,本譯文未經允許或授權,請勿轉載或複製。