Просто любопытно. Какие системы обеспечивают как EAGAIN, так и EWOULDBLOCK #define
их как разные значения?
Какие системы определяют EAGAIN и EWOULDBLOCK как разные значения?
Ответ 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 они всегда имеют одинаковое значение.