А как узнать кода ioctl завершился?
f = 1;
if (ioctl(fd, FIONBIO, &f) == -1)
{
perror("ioctl() FIONBIO");
}
Вам действительно надо почитать Стивенса. Данный ioctl переводит файл/сокет в неблокируемый режим, все дальнейшие обращения по данному дескриптору не будут блокироваться в ядре. Если будет необходимость блокировки, то соответствующий вызов будет возвращаться со значением -1 и в errno будет устанавливаться EAGAIN.
RLX действительно прав, Вам необходимо объяснить что именно вы хотите получить, и желательно, всеже почитать что-либо на данную тематику. Для начала можно почитать FAQ от ru.unix.prog и comp.unix.programmer.