mirror of
https://gitlab.gnome.org/GNOME/glib.git
synced 2025-01-13 15:56:23 +01:00
Ignore SIGPIPE when using GSocket
http://bugzilla.gnome.org/show_bug.cgi?id=583001
This commit is contained in:
parent
2ea22d8f46
commit
25800ed4a3
@ -28,6 +28,7 @@
|
||||
#include "config.h"
|
||||
|
||||
#include <errno.h>
|
||||
#include <signal.h>
|
||||
#include <string.h>
|
||||
#include <stdlib.h>
|
||||
|
||||
@ -102,6 +103,12 @@
|
||||
*
|
||||
* All socket file descriptors are set to be close-on-exec.
|
||||
*
|
||||
* Note that creating a #GSocket causes the signal %SIGPIPE to be
|
||||
* ignored for the remainder of the program. If you are writing a
|
||||
* command-line utility that uses #GSocket, you may need to take into
|
||||
* account the fact that your program will not automatically be killed
|
||||
* if it tries to write to %stdout after it has been closed.
|
||||
*
|
||||
* Since: 2.22
|
||||
**/
|
||||
|
||||
@ -616,6 +623,14 @@ g_socket_class_init (GSocketClass *klass)
|
||||
/* Make sure winsock has been initialized */
|
||||
type = g_inet_address_get_type ();
|
||||
|
||||
#ifdef SIGPIPE
|
||||
/* There is no portable, thread-safe way to avoid having the process
|
||||
* be killed by SIGPIPE when calling send() or sendmsg(), so we are
|
||||
* forced to simply ignore the signal process-wide.
|
||||
*/
|
||||
signal (SIGPIPE, SIG_IGN);
|
||||
#endif
|
||||
|
||||
g_type_class_add_private (klass, sizeof (GSocketPrivate));
|
||||
|
||||
gobject_class->finalize = g_socket_finalize;
|
||||
|
Loading…
Reference in New Issue
Block a user