Salve a tutti.. lavorando coi socket in C ho impostato un timeout su un socket utilizzando la funzione

codice:
setsockopt(sock, SOL_SOCKET, SO_RCVTIMEO, &tv, sizeof(tv))
di modo che poi andavo a controllare lo scadere del timeout o meno nel seguente modo

codice:
numByteRcv=recvfrom(sock,(int*)&childPort,sizeof(int),0,(struct sockaddr *)&serverInfo,&len2);
            if(numByteRcv<0) {
               if(errno == EWOULDBLOCK) {
                  printf("Socket timeout in ricezione."); continue; }
                  else { printf("error in recv() function.\n"); continue; }
                  }
questo tipo di controllo però sembra non funzionare se applicato alle recvfrom che si trovano in un blocco di codice nel quale è stata usata una select per realizzare I/O multiplexing.
Sapreste spiegarmi il perchè? soluzioni a riguardo per far funzionare il timeout?

N.B. So che è possibile impostare timout anche mediante la select ma da quello che ho letto mi pare di capire che funzionerebbe in modo diverso..