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

Posted

技术标签:

【中文标题】哪些系统将 EAGAIN 和 EWOULDBLOCK 定义为不同的值?【英文标题】:Which systems define EAGAIN and EWOULDBLOCK as different values? 【发布时间】:2011-10-23 14:41:41 【问题描述】:

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

【问题讨论】:

【参考方案1】:

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

【讨论】:

看起来最新的 EAGAIN != EWOULDBLOCK OS 版本大约是 2002 年。谢谢。 一些代码也应该适用于旧版本。我认识一些 OS/2 的当前用户(不是 ecomstation,而是最初的 Os/2,最后一个版本发布于 2001 年)。例如。 arp 可移植库; firefox 3.5 也被移植到 OS/2,【参考方案2】:

是的,有几个系统。

在 GNU C 库中,它们始终具有相同的值。

【讨论】:

linux/parisc,一些 HP-UX,一些其他旧的 unices.. 这就是谷歌显示的,我不知道更多。只需使用两者,如果它们相同,编译器会很乐意对其进行优化。

以上是关于哪些系统将 EAGAIN 和 EWOULDBLOCK 定义为不同的值?的主要内容,如果未能解决你的问题,请参考以下文章

ZMQ 扩展请求回复中的 EAGAIN

为什么pthread_key_create中的EAGAIN会发生?

Linux编程下EAGAIN和EINTR宏的含义及处理

读取套接字:EAGAIN:资源暂时不可用

pthread_mutex_lock和EAGAIN

在另一个线程上接收的套接字上触发 EAGAIN