最終更新日時(UTC):
が更新

履歴 編集

macro
<csignal>

SIG_DFL

#define SIG_DFL see below

概要

signal関数に渡される引数として、シグナルハンドラをデフォルトに設定するマクロ。

シグナル受信時にsignal関数でSIG_DFLが指定されている場合、そのシグナルに対する実装定義のデフォルト処理が実行される。

#include <csignal>
#include <iostream>
#include <thread>
#include <chrono>

volatile std::sig_atomic_t flag = 0;

void handler(int)
{
  flag = 1;
}

int main()
{
  std::signal(SIGINT, handler);

  std::cout << "Press Ctrl+C (handled)" << std::endl;
  while (!flag) {
    std::this_thread::sleep_for(std::chrono::milliseconds(100));
  }

  // デフォルトに戻す
  std::signal(SIGINT, SIG_DFL);
  std::cout << "Press Ctrl+C again (default action)" << std::endl;
  for (;;) {
    std::this_thread::sleep_for(std::chrono::milliseconds(100));
  }
}

出力

Press Ctrl+C (handled)
Press Ctrl+C again (default action)

関連項目