select
, FD_CLR, FD_ISSET, FD_SET, FD_ZERO gelijktijdige In/Uit verdeling
1. select.2.man
Manpage of SELECT
SELECT
Section: Linux Programmeurs Handleiding (2)Updated: Februari 11, 1996
Index Return to Main Contents
NAAM
select, FD_CLR, FD_ISSET, FD_SET, FD_ZERO - gelijktijdige In/Uit verdelingBESCHRIJVING
#include <sys/time.h>#include <sys/types.h>
#include <unistd.h>
int select(int n, fd_set *leesbi, fd_set *schrijfbi, fd_set *uitzondbi, struct timeval *tijduit);
FD_CLR(int bi, fd_set *set);
FD_ISSET(int bi, fd_set *set);
FD_SET(int bi, fd_set *set);
FD_ZERO(fd_set *set);
BESCHRIJVING
select wacht tot een aantal bestandindicators van toestand veranderd.Drie onafhankelijke zetten van beschrijvers worden beloerd. Zij die opgenoemd worden in leesbi zullen worden beloerd om te zien of er karakters beschikbaar komen voor lezen (nauwkeuriger, om te zien of een lees-opdracht niet zal blokkeren - in het bijzonder zal een bestandindicator ook klaar zijn bij eind-van-bestand), die in schrijfbi zullen worden beloerd om te zien of een schrijf-opdracht niet zal blokkeren, en die in uitzondbi zullen worden beloerd voor uitzonderingen. Bij het einde worden de sets locaal aangepast om aan te geven welke beschrijvers feitelijk van toestand veranderd zijn.
Er is voorzien in vier macro's om de sets te manipuleren. FD_ZERO {*nul} zal een set wissen. FD_SET {*zet} en FD_CLR {*wis} voegt toe of verwijderd een gegeven beschrijver van een set. FD_ISSET {*is set} test om te zien of een beschrijver onderdeel is van de set; dit is bruikbaar nadat select terugkeert.
n is de hoogst-genummerde beschrijver in de drie sets, plus 1.
tijduit is een boven-grens op de hoeveelheid tijd verstreken voordat select terugkeert. Het mag nul zijn, wat veroorzaakt dat select on-Middelijk terugkeert. Als tijduit NULL is (geen tijduit) dan kan select voor onbepaalde duur blokkeren.
TERUGGEEF WAARDE
Bij success geeft select het aantal beschrijvers terug die de sets bevatten, wat nul kan zijn als de tijduit voorbijgaat voordat iets interessants gebeurd. Bij falen wordt -1 teruggegeven en errno wordt naar behoren gezet; de sets en tijduit worden onbepaald, dus vertrouw niet op hun inhoud na een fout.FOUTEN
- EBADF
- {slechte bi} Een ongeldige bestandindicator werd gegeven in een van de sets.
- EINTR
- {ongeldig} Een niet geblokkeerd signaal werd gevangen.
- EINVAL
- {ongeldig} n is negatief
- ENOMEM
- {geen geheugen} select was niet in status om voldoende geheugen de bemachtigen voor interne tabellen.
OPMERKINGEN
Sommige code roept select aan met alle drie sets leeg, n nul, en een niet-nul tijduit als een vrij overdraagbare manier om te slapen met kleiner dan een seconde precisie.Op Linux wordt tijduit veranderd om de hoeveelheid tijd niet-geslapen weer te geven; de meeste andere verwezijnlijkingen doen dit niet. Dit veroorzaakt problemen met Linux code die tijduit leest en overgedragen wordt naar andere besturingssystemen, en wanneer code wordt overgedragen naar Linux die de "struct" timeval voor meerdere selects in een lus gebruikt zonder het opnieuw in te wijden. Beschouw tijduit als onbepaald nadat select terugkeert
VOORBEELD
#include <stdio.h> #include <sys/time.h> #include <sys/types.h> #include <unistd.h> int main(void) { fd_set lbesb; struct timeval tw; int terugwrd; /* Beloer stdin (bi 0) om te kijken wanneer het invoer heeft. */ FD_ZERO(&lbesb); FD_SET(0, &lbesb); /* Wacht maximaal vijf seconden. */ tw.tv_sec = 5; tw.tv_usec = 0; terugwrd = select(1, &lbesb, NULL, NULL, &tw); /* Vertrouw nu niet op de waarde van tw! */ if (terugwrd) printf("Gegevens zijn nu beschikbaar.
"); /* FD_ISSET(0, &lbesb) zal waar zijn. */ else printf("Geen gegevens binnen vijf seconden.
"); exit(0); }
VOLDOET AAN
4.4BSD (de select functie verscheen voor het eerst in 4.2BSD). Over het algemeen overdraagbaar naar/van niet-BSD systemen die klonen van de BSD socket {"socket"} laag ondersteunen (inclusief System V soorten). Merk echter op dat de System V soort gewoonlijk de tijduit waarde zet voor eindigen, en de BSD soort doet dat niet.ZIE
accept(2) {aanvaarden}, connect(2) {aansluiten}, poll(2) {onderzoek}, read(2) {lees}, recv(2) {ontvang}, send(2) {zend}, write(2) {schrijf}VERTALING
Alles wat tussen `{'..`}' staat is aanvullende vertaling, en hoort niet bij de originele handleiding. Deze handleiding uit manpages-dev 1.29 werd vertaald door JHBoersema. Email naar <manpages-nl@nl.linux.org>.$Id: select.2,v 1.1 2001/03/28 21:06:43 joostvb Exp $
Index
- NAAM
- BESCHRIJVING
- BESCHRIJVING
- TERUGGEEF WAARDE
- FOUTEN
- OPMERKINGEN
- VOORBEELD
- VOLDOET AAN
- ZIE
- VERTALING
This document was created by man2html using the manual pages.
Time: 23:25:42 GMT, July 09, 2008


