Это позволяет нам убедиться, что все честно, т.е. запрос отрабатывает строго после того как был сформирован.
gcc -lrt -lsocket -lnsl -lresolv sockaio.c
Структура программы похожа на то, как обычно пишут драйверы: основная нить инициирует первую операцию в цепочке и спит в ожидании прерывания (ну, так как написано у меня – основной цикл будет просыпаться после каждого прерывания). А обработчик прерывания уже отвечает за инициацию следующих операций в цепочке.
Код обоих примеров надо бы подчистить.
Дурацкий vim мне табуляций понавтыкал куда не надо, и порядок инклудов нечеловеческий.