Re: Fwd: Simple changes to select(2) and pipe(7) - example program

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



Hi Henri,

On 11/9/22 14:57, Alejandro Colomar wrote:
-------- Forwarded Message --------
Subject: Re: Simple changes to select(2) and pipe(7) - example program
Date: Wed, 9 Nov 2022 09:42:43 +0100
From: J.H. vd Water <henri.van.de.water@xxxxxxxxx>
To: Alejandro Colomar <alx@xxxxxxxxxx>
CC: Michael Kerrisk <mtk.manpages@xxxxxxxxx>

I've forwarded the emails I got from you to the mailing list, for an open discussion. If I'm missing any, please resend including to the list, and preferrably as a reply to this thread.

I've also included Ken in the CC list, as the CONTRIBUTING file recommends, since he knows what we're discussing.

I've included both mtk addresses, since this issue is both reported for the man pages and for his TLPI book. But as you've experienced, he's recently been very busy and might not respond to this thread.


On 11/8/22 13:20, Alejandro Colomar wrote:
On 11/6/22 19:53, J.H. vd Water wrote:
[snip]

man 2 select  ... DESCRIPTION reads:

"select() allows a program to monitor multiple file descriptors, waiting
  until one or more of the file descriptors become "ready" for some class of
  I/O operation (e.g., input possible). A file descriptor is considered
  ready if it is  possible to perform a corresponding I/O operation
  (e.g., read(2), or a sufficiently small write(2)) without blocking."

I suggest to add the following line:

"However, note that select(2) will block on the read end of a pipe/fifo, if
  the write end of the pipe/fifo has never been opened before, unlike read(2)
  (read(2) will always return with zero if the write end of the pipe/fifo is
  closed - see pipe(7) where the text starts with I/O on pipes and fifos).

It is interesting.  Could you please share a small example program
that demonstrates this behavior?  That would certainly help a lot
reviewing the change.

Hi Alex,

Yesterday, I replied to Alejandro Colomar <alx.manpages@xxxxxxxxx>; I also sent
you a copy of the message I sent to M.K. on 29th of September (clarification).

Yeah, I see. For now both my addresses arrive to the same mailbox, so no problem there. Thanks.

The mailing list is more important, though.



This time I will attach 2 files (i.e. server.c and client.c), the small example
program that you asked for (using alx@xxxxxxxxxx as address).

Thanks!

BTW, I just found a bug in the client.c program:

    write(fd, &"What ho!", 9);

That & is wrong. The address of the array should not be passed to write(2), but rather the address to the first element in the array. This is a mild bug that will normally not do any harm, but can be dangerous still, if your compiler is optimizing heavily.

I'll take some time to investigate the example programs, since these days I don't have much time for that; sorry. Feel free to ping me in a week or two if I didn't respond.

Cheers,

Alex


Regards,
Henri

--
<http://www.alejandro-colomar.es/>

Attachment: OpenPGP_signature
Description: OpenPGP digital signature


[Index of Archives]     [Kernel Documentation]     [Netdev]     [Linux Ethernet Bridging]     [Linux Wireless]     [Kernel Newbies]     [Security]     [Linux for Hams]     [Netfilter]     [Bugtraq]     [Yosemite News]     [MIPS Linux]     [ARM Linux]     [Linux RAID]     [Linux Admin]     [Samba]

  Powered by Linux