只是好奇。哪些系统同时提供 EAGAIN 和 EWOULDBLOCK#define
它们作为不同的值?
2 回答
有一些... 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 再次;第54章
OS/390 也是: 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 库中,它们总是具有相同的值。