好奇。哪些系统将EAGAIN和EWOULDBLOCK #define
作为不同的值提供?
答案 0 :(得分:25)
有一些...... 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的错误定义...
旧的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: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使用不同的代码
答案 1 :(得分:2)
是的,有几个系统。
在GNU C库中,它们总是具有相同的值。