> From: Joachim Schmitz [mailto:j...@schmitz-digital.de]
> Sent: Wednesday, September 05, 2012 2:58 PM
> To: 'Paolo Bonzini'
> Cc: 'Junio C Hamano'; 'firstname.lastname@example.org'; 'Erik Faye-Lund';
> Subject: RE: poll() emulation in git
> > From: Paolo Bonzini [mailto:paolo.bonz...@gmail.com] On Behalf Of Paolo
> > Bonzini
> > Sent: Wednesday, September 05, 2012 2:05 PM
> > To: Joachim Schmitz
> > Cc: 'Junio C Hamano'; email@example.com; 'Erik Faye-Lund';
> > bug-gnu...@gnu.org
> > Subject: Re: poll() emulation in git
> > Il 05/09/2012 13:24, Joachim Schmitz ha scritto:
> > > However: this poll implementation, while compiling OK, doesn't work
> > > properly.
> > > Because it uses recv(...,MSG_PEEK), it works on sockets only (returns
> > > ENOTSOCK on anything else), while the real poll() works
> > > kind if file descriptors, at least that is my understanding.
> > Actually recv(...,MSG_PEEK) on most Unix variants works on non-sockets
> > too. The trick is taken from GNU Pth in turn.
> > > Here on HP NonStop, when being connected via an non-interactive SSH, we
> > > get a set of pipes (stdin, stdout, stderr) instead of
> > > socket to talk to, so the poll() just hangs/loops.
> > Does your system have a working FIONREAD ioctl for pipes?
> It does have FIONREAD ioctl. Whether it works properly is to be determined...
> I'll test if you could show me how?
Oh, now I see what you aimed at, but no, that Mac OS X method doesn't work for
me, I tried (at least I think I did).
And <sys/ioctl.h> has
* Normal IOCTL's supported by the socket interface
#define FIONREAD _IOR(0, 8, _ioctl_int) /* Num of bytes to read */
#define FIONBIO _IOW(0, 9, _ioctl_int) /* Non-blocking I/O */
So these seem to be supported on sockets only, I guess.
And indeed the man pages for ioctl confirms:
Valid values for the request parameter for AF_INET or
AF_INET6 sockets are:
FIONREAD Gets the number of bytes available for reading and
stores it at the int pointed at by arg.
So not even AF_UNIX sockets, not to mention pipes...
To unsubscribe from this list: send the line "unsubscribe git" in
the body of a message to majord...@vger.kernel.org
More majordomo info at http://vger.kernel.org/majordomo-info.html