调用了signal(SIGPIPE, SIG_IGN)仍然出现Program received signal SIGPIPE, Broken pipe.

Posted 上下求索.

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了调用了signal(SIGPIPE, SIG_IGN)仍然出现Program received signal SIGPIPE, Broken pipe.相关的知识,希望对你有一定的参考价值。

问题

调用了signal(SIGPIPE, SIG_IGN)仍然出现Program received signal SIGPIPE, Broken pipe.

解答

GDB调试网络程序时,会遇到SIGPIPE信息,默认GDB会把程序停下来,即使程序使用signal(SIGPIPE, SIG_IGN);来忽略信号。
在gdb模式下运行下面的命令)
handle SIGPIPE nostop print

(gdb) handle SIGPIPE nostop print
Signal        Stop      Print   Pass to program Description
SIGPIPE       No        Yes     Yes             Broken pipe

如果连信息提示都不想看见,可以这样设置:
handle SIGPIPE nostop noprint

以上是关于调用了signal(SIGPIPE, SIG_IGN)仍然出现Program received signal SIGPIPE, Broken pipe.的主要内容,如果未能解决你的问题,请参考以下文章

如何让MAC屏蔽SIGPIPE信号?

避免SIGPIPE导致的iOS应用闪退/Avoiding SIGPIPE signal crash in iOS(mach_msg_trapSIGPIPE信号)

C: signal() 是进程级别的吗?

Java Socket 怎么忽略SIGPIPE信号

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

SIGPIPE信号解析