std::signal

来自cppreference.com
< cpp‎ | utility‎ | program

定义于头文件 <csignal>
void (*signal( int sig, void (*handler) (int))) (int);
设置错误信号sig处理程序。可以设置的默认处理,使信号处理程序会发生,信号被忽略,或一个用户定义的函数被调用.
原文:
Sets the error handler for signal sig. The signal handler can be set so that default handling will occur, signal is ignored, or an user-defined function is called.
文本通过谷歌翻译机器翻译。
你可以帮忙校正和验证翻译。点击此处查看指示。
当信号处理程序设置为一个函数和一个信号出现,它实现定义是否std::signal(sig, SIG_DFL)都将立即执行的信号处理程序的开始之前。此外,实施可以防止一些实现定义的一组信号的信号处理程序运行时,发生.
原文:
When signal handler is set to a function and a signal occurs, it is implementation defined whether std::signal(sig, SIG_DFL) will be executed immediately before the start of signal handler. Also, the implementation can prevent some implementation-defined set of signals from occurring while the signal handler runs.
文本通过谷歌翻译机器翻译。
你可以帮忙校正和验证翻译。点击此处查看指示。
对于一些信号,,实现可致电std::signal(sig, SIG_IGN)在启动的程序。对于剩下的实现必须调用std::signal(sig, SIG_DFL).
原文:
For some of the signals, the implementation may call std::signal(sig, SIG_IGN) at the startup of the program. For the rest, the implementation must call std::signal(sig, SIG_DFL).
文本通过谷歌翻译机器翻译。
你可以帮忙校正和验证翻译。点击此处查看指示。
如果用户定义的函数返回时,处理SIGFPESIGILLSIGSEGV或任何其他执行自定义的信号,指定一个计算异常的行为是不确定的。在大多数实现中,该程序将终止.
原文:
If the user defined function returns when handling SIGFPE, SIGILL, SIGSEGV or any other implementation-defined signal specifying a computational exception, the behavior is undefined. In most implementations the program terminates.
文本通过谷歌翻译机器翻译。
你可以帮忙校正和验证翻译。点击此处查看指示。
std::abortstd::raise的结果,如果信号处理函数被调用的行为是不确定的,如果不遵守下列条件之一的:
原文:
If the signal handler is called as a result of std::abort or std::raise, the behavior is undefined if any of the following requirements is not followed:
文本通过谷歌翻译机器翻译。
你可以帮忙校正和验证翻译。点击此处查看指示。
  • 信号处理程序调用std::raise.
    原文:
    the signal handler calls std::raise.
    文本通过谷歌翻译机器翻译。
    你可以帮忙校正和验证翻译。点击此处查看指示。
  • 信号处理程序是指静态存储持续时间的对象,这是不声明为volatile std::sig_atomic_t.
    原文:
    the signal handler refers to an object of static storage duration which is not declared as volatile std::sig_atomic_t.
    文本通过谷歌翻译机器翻译。
    你可以帮忙校正和验证翻译。点击此处查看指示。
  • 信号处理程序调用任何函数内的标准库,除了std::abortstd::_Exit,或std::signal的第一个参数的信号处理.
    原文:
    the signal handler calls any function within the standard library, except std::abort, std::_Exit, or std::signal with the first argument not being the number of the signal currently handled.
    文本通过谷歌翻译机器翻译。
    你可以帮忙校正和验证翻译。点击此处查看指示。

目录

[编辑] 参数

sig -
信号设置信号处理程序。它可以是一个实现定义的值或以下值之一:
定义信号类型
(宏常量) [编辑]
原文:
the signal to set the signal handler to. It can be an implementation-defined value or one of the following values:
定义信号类型
(宏常量) [编辑]
文本通过谷歌翻译机器翻译。
你可以帮忙校正和验证翻译。点击此处查看指示。
handler -
信号处理程序。这必须是下列之一:
  • SIG_DFL宏。信号处理程序设置为系统默认的信号处理程序。
  • SIG_IGN宏。的信号被忽略。
  • 指向函数的指针。函数签名必须是等价于下面的:
void fun(int sig);
原文:
the signal handler. This must be one of the following:
  • SIG_DFL macro. The signal handler is set to default signal handler.
  • SIG_IGN macro. The signal is ignored.
  • pointer to a function. The signature of the function must be equivalent to the following:
void fun(int sig);
文本通过谷歌翻译机器翻译。
你可以帮忙校正和验证翻译。点击此处查看指示。

[编辑] 返回值

以前的信号处理程序,可以禁用一些实现成功或失败(设置信号处理程序SIG_ERR).
原文:
Previous signal handler on success or SIG_ERR on failure (setting a signal handler can be disabled on some implementations).
文本通过谷歌翻译机器翻译。
你可以帮忙校正和验证翻译。点击此处查看指示。

[编辑] 示例

[编辑] 另请参阅

为特定信号运行信号处理函数
(函数) [编辑]
signalC 文档