31

只是好奇。哪些系统同时提供 EAGAIN 和 EWOULDBLOCK#define它们作为不同的值?

4

2 回答 2

31

有一些... 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 使用不同的代码

于 2011-08-09T21:45:21.337 回答
2

是的,有几个系统。

在 GNU C 库中,它们总是具有相同的值。

于 2011-08-09T21:30:08.527 回答