哪些系统将EAGAIN和EWOULDBLOCK定义为不同的值?

时间:2011-08-09 21:27:07

标签: unix posix errno

好奇。哪些系统将EAGAIN和EWOULDBLOCK #define作为不同的值提供?

2 个答案:

答案 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库中,它们总是具有相同的值。