Provided by: manpages-nl_20051127-1_all bug

NAAM

       select,  FD_CLR,  FD_ISSET,  FD_SET,  FD_ZERO  -  gelijktijdige  In/Uit
       verdeling

BESCHRIJVING

       #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.\n");
               /* FD_ISSET(0, &lbesb) zal waar zijn. */
           else
               printf("Geen gegevens binnen vijf seconden.\n");

           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

       Dit  is  een  handleiding  uit  manpages-dev  1.29.   Alles  wat tussen
       ‘{’..‘}’ staat is aanvullende vertaling, en hoort niet bij de originele
       handleiding.  Email naar <manpages-nl@nl.linux.org>.

       $Id: select.2,v 1.1.1.1 2004/03/21 21:02:25 cor Exp $