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
| Name | Type | Dir | Description |
|---|---|---|---|
| nd | int | - | |
| in | u_int32_t | - | |
| ou | u_int32_t | - | |
| ex | u_int32_t | - | |
| tv | struct timeval | - |
Historique des versions
| XNU tag | macOS | # |
|---|---|---|
| xnu-1456.1.26 | macOS 10.6 Snow Leopard | 93 |
| xnu-1486.2.11 | — | 93 |
| xnu-1504.15.3 | — | 93 |
| xnu-1504.3.12 | — | 93 |
| xnu-1504.7.4 | — | 93 |
| xnu-1504.9.17 | — | 93 |
| xnu-1504.9.26 | — | 93 |
| xnu-1504.9.37 | — | 93 |
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