Skip to content
Syscall BSD#93

svc · unix #93

select

Attend des conditions de lecture, d'écriture ou exceptionnelles sur un ensemble de descripteurs jusqu'à expiration d'un délai.

Prototype

int select(int nd, u_int32_t *in, u_int32_t *ou, u_int32_t *ex, struct timeval *tv);

Retour: int

Arguments

NameTypeDirDescription
ndint-
inu_int32_t-
ouu_int32_t-
exu_int32_t-
tvstruct timeval-

Historique des versions

XNU tagmacOS#
xnu-1456.1.26macOS 10.6 Snow Leopard93
xnu-1486.2.1193
xnu-1504.15.393
xnu-1504.3.1293
xnu-1504.7.493
xnu-1504.9.1793
xnu-1504.9.2693
xnu-1504.9.3793

Notes

Limité aux fds inférieurs à FD_SETSIZE (1024). Sur macOS, kqueue passe bien mieux à l'échelle et select n'est conservé que pour la portabilité. Renvoie -1/EINTR à la délivrance d'un signal sauf si SA_RESTART est positionné; le timeval n'est pas modifié.

Détection

syscall::select:entry en DTrace expose les bitmaps fd-set via les pointeurs d'arguments. lsof et le Moniteur d'activité montrent les processus en attente dans select via le wait channel selrec.

API associées

pollkqueuekeventpselectread