Hi Lukas, On Mon, Aug 29, 2011 at 2:26 PM, Lukas Czerner <lczerner@xxxxxxxxxx> wrote: > When dealing with sockets, we have to be sure that there is no recv > still blocking on it on another thread, otherwise it might block forever, > since no more messages will be send via the socket. We should advice to > use shutdown before closing socket. As far as I know, in the usual case, a simple close() is sufficient. Can you say some more about how you determined the above statement and in what circumstances it applies? Thanks, Michael > Signed-off-by: Lukas Czerner <lczerner@xxxxxxxxxx> > --- > man2/close.2 | 7 +++++++ > 1 files changed, 7 insertions(+), 0 deletions(-) > > diff --git a/man2/close.2 b/man2/close.2 > index a2a2961..02472f3 100644 > --- a/man2/close.2 > +++ b/man2/close.2 > @@ -114,6 +114,13 @@ other threads in the same process. > Since a file descriptor may be reused, > there are some obscure race conditions > that may cause unintended side effects. > +.PP > +When dealing with sockets, you have to be sure that there is no > +.BR recv (2) > +still blocking on it on another thread, otherwise it might block forever, > +since no more messages will be send via the socket. Be sure to use > +.BR shutdown (2) > +to shut down all parts the connection before closing the socket. > .\" Date: Tue, 4 Sep 2007 13:57:35 +0200 > .\" From: Fredrik Noring <noring@xxxxxxxxxx> > .\" One such race involves signals and ERESTARTSYS. If a file descriptor > -- > 1.7.4.4 > > -- Michael Kerrisk Linux man-pages maintainer; http://www.kernel.org/doc/man-pages/ Author of "The Linux Programming Interface"; http://man7.org/tlpi/ -- To unsubscribe from this list: send the line "unsubscribe linux-man" in the body of a message to majordomo@xxxxxxxxxxxxxxx More majordomo info at http://vger.kernel.org/majordomo-info.html