[ Web Proxy ]
URL:
Viewing: https://ru.cppreference.com/cpp/utility/program/signal [Back]  [Original]

std::signal cppreference.com
cppreference.com

std::signal

cppreference.com
 
C++
(C++20)
(C++20)
(C++11)
(C++20)
/
(C++11)
(C++11)
(C++11)
(C++17)
 
 
 
<tbody> </tbody>
/*-*/* signal(int sig, /*-*/* handler);
(1)
extern "C" using /*-*/ = void(int);
(2) ( *)

sig , handler. , , .

, , std::signal(sig, SIG_DFL) . , , , .

std::signal(sig, SIG_IGN). std::signal(sig, SIG_DFL).

(: POSIX sigaction , )

sig , . , :

() []
handler . : <tbody> </tbody>
extern "C" void fun(int sig);
<tbody> </tbody>
void fun(int sig);
( C++17)


SIG_ERR ( )

, , .

std::abort std::raise ( ), ,

  • ,
( C++17)

f <atomic> <stdatomic.h> ( C++23), :

, - :

  • (, , ):
( C++17)

, SIGFPE, SIGILL, SIGSEGV , , .

std::abort std::raise ( ), , std::raise.

,

  • volatile std::sig_atomic_t
( C++11)

, , volatile std::sig_atomic_t std::atomic, .

( C++14)

signal() .

std::raise (), std::raise , std::raise. .

volatile std::sig_atomic_t , , . , , , A B, B A, volatile std::sig_atomic_t , A B.

( C++14)

POSIX , signal , , .

, , , C C++. C++ .

( C++17)

.

( C++17)

#include <csignal>
#include <iostream>

namespace
{
  volatile std::sig_atomic_t gSignalStatus;
}

void signal_handler(int signal)
{
  gSignalStatus = signal;
}

int main()
{
  //   
  std::signal(SIGINT, signal_handler);

  std::cout << " : " << gSignalStatus << '\n';
  std::cout << " : " << SIGINT << '\n';
  std::raise(SIGINT);
  std::cout << " : " << gSignalStatus << '\n';
}

:

 : 0
 : 2
 : 2

  • C++23 (ISO/IEC 14882:2023):
  • 17.13.5 [support.signal]
  • C++20 (ISO/IEC 14882:2020):
  • 17.13.5 [support.signal]
  • C++17 (ISO/IEC 14882:2017):
  • 21.10.4 [support.signal]

C++:

LWG 3756 C++17 , std::atomic_flag


() []
,
() []
C signal

Web Proxy Viewer  |  New URL  |  Original Page