std::signal
/*-*/* 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>
|
SIG_ERR ( )
, , .
|
std::abort std::raise ( ), ,
|
( C++17) |
|
, - :
|
( C++17) |
, SIGFPE, SIGILL, SIGSEGV , , .
std::abort std::raise ( ), , std::raise.
, , |
( C++14) | ||
|
std::raise (), |
( C++14) |
| ( 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++11) |
, () |
C signal
| |