O_RDWR On Named Pipes

Liste des GroupesRevenir à col misc 
Sujet : O_RDWR On Named Pipes
De : ldo (at) *nospam* nz.invalid (Lawrence D'Oliveiro)
Groupes : comp.os.linux.misc
Date : 11. Mar 2025, 02:48:01
Autres entêtes
Organisation : A noiseless patient Spider
Message-ID : <vqo4og$1l4ia$1@dont-email.me>
User-Agent : Pan/0.162 (Pokrosvk)
Typically when you open a file descriptor on a pipe, it’s either for
reading or writing, but not both.

However, when you open a named pipe, it is possible to specify the mode
O_RDWR; but does this work, or return an error? And if it doesn’t return
an error, what exactly does it do?

I checked some relevant man pages <https://manpages.debian.org/fifo(7)>
<https://manpages.debian.org/pipe(7)>, but they completely avoid any
mention of O_RDWR mode.

So I tried it. And it works without error. You get back a single file
descriptor, that you can use for both writing to the pipe and reading from
it. So if no other processes open the same named pipe, you can write
something to it (I suppose until the kernel buffer fills up), and read the
same thing back again.

Not very useful, on the face of it. But I guess it means you can (with
appropriate coordination from both ends) switch the direction of data flow
at any point, without having to close and reopen the named pipe. Basically
O_RDWR gives you a half-duplex communication channel, where O_RDONLY and
O_WRONLY will give you the ends of a simplex (unidirectional) channel.

Date Sujet#  Auteur
11 Mar 25 o O_RDWR On Named Pipes1Lawrence D'Oliveiro

Haut de la page

Les messages affichés proviennent d'usenet.

NewsPortal