On Linux, ioctl(2) returns several different errors[1]: EBADF d is not a valid descriptor. EFAULT argp references an inaccessible memory area. EINVAL Request or argp is not valid. ENOTTY d is not associated with a character special device. ENOTTY The specified request does not apply to the kind of object that the descriptor d references.
In the case of FIONREAD, Cygwin doesn't seem to distinguish between EINVAL and ENOTTY, and this causes at least one major bug: http://gcc.gnu.org/bugzilla/show_bug.cgi?id=35536 I have patched GCJ and GNU classpath to work around it, but this really needs to be fixed in Cygwin itself. Yaakov [1] http://www.kernel.org/doc/man-pages/online/pages/man2/ioctl.2.html -- Problem reports: http://cygwin.com/problems.html FAQ: http://cygwin.com/faq/ Documentation: http://cygwin.com/docs.html Unsubscribe info: http://cygwin.com/ml/#unsubscribe-simple