只是好奇。哪些系统同时提供EAGAIN和eblock #define
作为不同的值?
有一些…http://www.gnu.org/s/hello/manual/libc/Error-Codes.html
注意:在许多旧的Unix系统中,这种情况由EWOULDBLOCK表示,这是一个明显不同于EAGAIN的错误代码。为了使您的程序可移植,您应该检查这两个代码并将它们视为相同的。http://lists.parisc-linux.org/hypermail/parisc-linux/9895.html
在某些SysV系统上EAGAIN != EWOULDBLOCK。我想我们继承了从HPUX的errno定义…
旧的AIX也是这样的系统:http://programming.itags.org/unix-linux-programming/81597/
HP-UX(和旧版本的AIX)
对于AIX,我找到了代码列表: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和其他平台EWOULDBLOCK != EAGAIN
有更满的表: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
所以,AIX 4.3,5.1;HP-UX 11.22和OSF1使用不同的EAGAIN和EWOULDBLOCK代码
是的,有几个系统。
在GNU C库中它们总是有相同的值