Why SIGPIPE is produced under linux
This article mainly shows you "why there is SIGPIPE under linux", which is easy to understand and clear. I hope it can help you solve your doubts. Let me lead you to study and learn this article "Why there is SIGPIPE under linux".
Brokenpipe:writetopipewithnoreaders. The pipe is broken. This signal is usually generated in inter-process communication, such as two processes using FIFO (pipeline) communication. If the read pipeline is not opened or terminated unexpectedly, the write process will receive the SIGPIPE signal. In addition, the two processes that communicate with Socket, the write process, the read process has been terminated while writing the Socket.
SIGPIPE (Brokenpipe) meaning
For other signal meanings, see:
Linux signal categories / lists-Overview
Solution method
Ignore SIGPIPE signal
Structsigactionsa
Sa.sa_handler=SIG_IGN
Sigaction (SIGPIPE,&sa,0)
Adjust the flags parameter of the socket sending function
Set flags to MSG_NOSIGNAL to achieve the effect that the whole process (not just the calling thread) ignores the SIGPIPE signal.
Ssize_tsend (intsockfd,constvoid*buf,size_tlen,intflags)
Ssize_tsendto (intsockfd,constvoid*buf,size_tlen,intflags,\
Conststructsockaddr*dest_addr,socklen_taddrlen)
Ssize_tsendmsg (intsockfd,conststructmsghdr*msg,intflags)
Sigpipe parameter
Parameter flags, which indicates how send transmits data:
MSG_CONFIRM provides link layer feedback to keep address mapping valid
MSG_DONTROUTE does not route packets out of the local network
MSG_DONTWAIT allows non-blocking behavior
MSG_EOF marks the end of the record
MSG_MORE allows delays and writes more data
The above is all the contents of the article "Why SIGPIPE is produced under linux". Thank you for reading! I believe we all have a certain understanding, hope to share the content to help you, if you want to learn more knowledge, welcome to follow the industry information channel!