Just curious. Which systems providing both EAGAIN and EWOULDBLOCK #define
them as different values?
The <errno. h> header file defines the integer variable errno, which is set by system calls and some library functions in the event of an error to indicate what went wrong.
It might (or might not) be the same as EWOULDBLOCK , which means "your thread would have to block in order to do that".
The initial value of errno at program startup is zero. In many cases, when a library function encounters an error, it will set errno to a non-zero value to indicate what specific error condition occurred.
There were some... http://www.gnu.org/s/hello/manual/libc/Error-Codes.html
Portability Note: In many older Unix systems, this condition was indicated by EWOULDBLOCK, which was a distinct error code different from EAGAIN. To make your program portable, you should check for both codes and treat them the same.
http://lists.parisc-linux.org/hypermail/parisc-linux/9895.html
On some SysV systems EAGAIN != EWOULDBLOCK. I think we inherited the errno definitions from HPUX...
Older AIX is such system too: http://programming.itags.org/unix-linux-programming/81597/
HP-UX (and older versions of AIX)
For AIX I found the list of codes: http://homepage3.nifty.com/owl_h0h0/unix/job/UNIX/tutorial/error.html
11 EAGAIN; 54 EWOULDBLOCK
OS/390 too: http://web.archiveorange.com/archive/v/zvbaIz8u6TzsQHHjfzOi
OS/390 and other platforms where EWOULDBLOCK != EAGAIN
There is fuller table: http://www.ioplex.com/~miallen/errcmp.html
SUSv3 AIX 4.3,5.1 HP-UX 11.22 Solaris 9,10 Linux 2.4.28,2.6.9 IRIX 6.5[4] OSF1 FreeBSD 5.2.1 OSX 10.3.8 MSVC6
EAGAIN 1 0 Resource unavailable, try again [3] 11 Resource temporarily unavailable 11 No more processes 11 Resource temporarily unavailable 11 Try again 11 Resource temporarily unavailable 11 ditto 35 Resource temporarily unavailable 35 Resource temporarily unavailable 11 Resource temporarily unavailable
EWOULDBLOCK 0.9 0 Operation would block [3] 54 Operation would block [2] 246 Operation would block 11 11 Operation would block 11 Resource temporarily unavailable 35 Operation would block 35 Operation would block 35 Operation would block
So, AIX 4.3,5.1; HP-UX 11.22 and OSF1 uses different codes for EAGAIN and EWOULDBLOCK
Yes, there are a couple of systems.
In GNU C library they always have the same value.
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With