最終更新日時: 2026年02月15日 00時39分52秒 (JST)
K10-K10 が更新

履歴 編集

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)

## 関連項目

- `signal`