Usando o select Subroutine Exemplo

Esta seção explica usando o exemplo de subroutine select.

O código para a rotina svc_run com a subroutine select é a seguinte:

void
svc_run()
{
    fd_set readfds;
    int dtbsz = getdtablesize();

    for (;;) {
        readfds = svc_fds;
        switch (select(dtbsz, &readfds, NULL,NULL,NULL)) {

        case -1:
            if (errno == EINTR)
                continue;
            perror("select");
            return;
        case 0:
            break;
        default:
            svc_getreqset(&readfds);
        }
    }
}

O número máximo de descritores de arquivos abertos que um servidor RPC pode utilizar foi configurado como 32767, a fim de manter a compatabilidade com os aplicativos de servidor RPC construídos em releases anteriores do AIX®. O tipo fd_set passado para a subroutine svc_getreqset precisa ter sido compilado com FD_SETSIZE configurado como 32767 ou maior. Passar em uma variável fd_set menor pode resultar no repassado em buffer sendo superado pela subroutine svc_getreqset.