This is the mail archive of the
mailing list for the Cygwin project.
Re: [PATCH fifo 0/2] Add support for duplex FIFOs
- From: Ken Brown <kbrown at cornell dot edu>
- To: "cygwin-patches at cygwin dot com" <cygwin-patches at cygwin dot com>
- Date: Mon, 29 Apr 2019 18:42:52 +0000
- Subject: Re: [PATCH fifo 0/2] Add support for duplex FIFOs
- References: <email@example.com> <firstname.lastname@example.org>
On 4/29/2019 2:29 PM, Ken Brown wrote:
> On 3/25/2019 7:06 PM, Ken Brown wrote:
>> The second patch in this series enables opening a FIFO with O_RDWR
>> access. The underlying Windows named pipe is created with duplex
>> access, and its handle is made the I/O handle of the first client.
>> I tested the patch in two ways.
>> The second test was the following sequence of commands in a bash
>> $ mkfifo foo
>> $ exec 7<>foo
>> $ echo blah > foo
>> $ read bar <&7
>> $ echo $bar
> I just realized that this doesn't test *writing* to the fd of a FIFO opened with
> O_RDWR. If I change the third command to "echo blah >&7", it does test this,
> and the write fails with ECOMM. It turns out that the call to NtWriteFile in
> fhandler_fifo::raw_write fails with STATUS_PIPE_LISTENING.
> Corinna, I'll try to debug this, but since I know you're about to be AFK for a
> month, I thought I'd check to see if you have any idea why this would happen.
Actually, the answer might be obvious. Looking at MSDN, it now seems clear to
me that you can't do I/O on the server side of a pipe until the pipe connects to
a client. So I'll have to rethink how to deal with the O_RDWR case.