Подтвердить что ты не робот

Какие системы определяют EAGAIN и EWOULDBLOCK как разные значения?

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

4b9b3361

Ответ 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. Я думаю, что мы унаследовали определения errno от 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

Да, есть несколько систем.

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