Skip site navigation (1)Skip section navigation (2)
Date:      Tue, 03 Feb 2004 16:54:18 +0000
From:      Peter Edwards <peter.edwards@openet-telecom.com>
To:        =?ISO-8859-1?Q?Dag-Erling_Sm=F8rgrav?= <des@des.no>
Cc:        current@FreeBSD.org
Subject:   Re: Coalescing pipe allocation
Message-ID:  <401FD23A.9070407@openet-telecom.com>
In-Reply-To: <xzpektc6rwo.fsf@dwp.des.no>
References:  <Pine.NEB.3.96L.1040131234955.17012E-100000@fledge.watson.org> <401FCCBE.2010008@openet-telecom.com> <xzpektc6rwo.fsf@dwp.des.no>

next in thread | previous in thread | raw e-mail | index | archive | help
Dag-Erling Smørgrav wrote:

>Peter Edwards <peter.edwards@openet-telecom.com> writes:
>  
>
>>How would one "shut down" one direction of the pipe and still maintain
>>the other? I don't know how I can signal my intention not to read or
>>write to the end I leave open...
>>    
>>
>
>man 2 shutdown
>  
>
Shutdown requires a socket, and won't play with pipes:

$ cat t.c
#include <sys/types.h>
#include <sys/socket.h>
#include <err.h>
#include <unistd.h>
int
main()
{
    int p[2];
    if (pipe(p) == -1)
        err(-1, "pipe");
    if (shutdown(p[0], SHUT_RD) == -1)
        err(-1, "shutdown");
    return 0;
}
$ cc -o t ./t.c
$ ./t
./t: shutdown: Socket operation on non-socket
$

>  
>
>>Is this portability issue so ridiculously out of date that the comment
>>in the pipe(2) manpage should be removed, or at least toned down?
>>    
>>
>
>No, POSIX only guarantees the traditional behaviour.  Bi-directional
>pipes are a non-portable BSDism.
>
>  
>
>>                                                                  It
>>seems silly to incur the costs of implementation you've mentioned and
>>then recommend that the feature not be used.
>>    
>>
>
>It can still be useful for programs in the base system, which do not
>need to be unconditionally portable to non-BSD systems.
>  
>
Fair 'nuff.



Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?401FD23A.9070407>