Какие системы определяют EAGAIN и EWOULDBLOCK как разные значения? - PullRequest
27 голосов
/ 10 августа 2011

Просто любопытно.Какие системы предоставляют EAGAIN и EWOULDBLOCK #define их как разные значения?

Ответы [ 2 ]

26 голосов
/ 10 августа 2011

Были некоторые ... http://www.gnu.org/s/hello/manual/libc/Error-Codes.html

Примечание по переносимости: во многих старых системах Unix это условие указывалось EWOULDBLOCK, который отличался от кода ошибки, отличного от EAGAIN. Чтобы сделать вашу программу переносимой, вы должны проверить оба кода и обращаться с ними одинаково.

http://lists.parisc -linux.org / hypermail / parisc-линукс / 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

2 голосов
/ 10 августа 2011

Да, есть пара систем.

В библиотеке GNU C они всегда имеют одинаковое значение.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...