31

ちょっと興味があるんだけど。EAGAIN と EWOULDBLOCK の両方#defineを異なる値として提供するシステムは?

4

2 に答える 2

31

いくつかありました... http://www.gnu.org/s/hello/manual/libc/Error-Codes.html

移植性に関する注意: 多くの古い Unix システムでは、この状態は、EAGAIN とは異なる明確なエラー コードである EWOULDBLOCK によって示されていました。プログラムを移植可能にするには、両方のコードをチェックして、同じように扱う必要があります。

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

EWOULDBLOCK != EAGAIN である OS/390 およびその他のプラットフォーム

より完全な表があります: 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 に答える