Для асинхронного кода сигнализации необходимо выполнить следующие действия.
Сначала вы должны разрешить вашему процессу получать SIGIO, а затем ваш сокет или канал должен быть переведен в асинхронный режим.
Поиск этих строк в вашем коде
//allow the process to receive SIGIO
fcntl(fd, F_SETOWN, getpid());
и
//Make socket/pipe non-blocking
fcntl(fd, F_SETFL, FASYNC);
или
//Make socket/pipe non-blocking
fcntl(fd, F_SETFL, O_NONBLOCK);
Ключевые слова для поиска: F_SETOWN , FASYNC и O_NONBLOCK