Я не слабо разбираюсь во внутреннем устройстве ОС, системному программированию не обучен, по этому адресую свой вопрос грамотным людям.
Допустим у меня сетевой сокет с флагом O_NONBLOCK. Для более широкого охвата примера возьмём два разных случая, пусть в одном из них записываемые в сокет данные отправляются получателю в виде датаграмм, а в другом в виде гарантированных TCP пакетов.
Собственно вопрос, что должно произойти под капотом write() на этом сокете там, на стороне операционной системы и/или библиотеки, что бы он вернул мне EWOULDBLOCK? Меня интересует конкретные вещи, не абстрактное типа «что-нибудь, что не позволит запись», а конкретно что там происходит и в каком виде это может явиться причиной EWOULDBLOCK.
Может быть ещё найдутся ссылки на литературу или иные источники, о которых вы знаете, что там эти вещи хорошо описываются, желательно не для создателей операционных систем, а для прикладных программистов.
Спасибо.