信号是什么(SIGPIPE,SIG_IGN); 做?

xen*_*ato 6 c unix signals

我所知道的个人用途SIGPIPESIGIGN.

是什么

signal(SIGPIPE, SIG_IGN);
Run Code Online (Sandbox Code Playgroud)

到底怎么办?

P.P*_*.P. 8

signal(SIGPIPE, SIG_IGN);
Run Code Online (Sandbox Code Playgroud)

只是忽略了信号SIGPIPE.通过SIG_IGN处理程序忽略给定的信号(除了信号SIGKILLSIGSTOP不能忽略).

顺便说一下,通常建议使用sigaction(2)over signal(2)作为sigaction提供更好的控制,也不需要在某些系统上"重置"处理程序(遵循System V信号行为).

  • `signal()`也返回先前安装的处理程序.所以一个干净的重置应该是:`void(*old)(int); old = signal(some_signal,some_handler); ...信号(some_signal,old);`.无论如何,`signal`是旧的(被认为是过时的)接口,你应该使用`sigaction`. (4认同)
  • 您可以再次呼叫信号(2)以重置它.例如,要将其重置为默认行为,请调用:`signal(SIGPIPE,SIG_DFL);`. (2认同)