Er mulig å bruke nanosleep i en uendelig løkke med å velge ()?

stemmer
0

Jeg har en C -program som gjør recv / send operasjoner fra / til kontakten ved hjelp av en for(;;)løkke og en select()for å overvåke fil descriptor. Jeg trenger også dette programmet til å sende en pakke hver 80msec til en pakke, hvordan kan jeg gjennomføre dette? Kanskje jeg kan bruke en fork()og barnet prosessen bare skrive en ack i en av filen descriptor overvåkes av select()hver 80msec. Er det bedre løsninger?

Publisert på 11/10/2009 klokken 16:14
kilden bruker
På andre språk...                            


1 svar

stemmer
3

Når du ringer velger () du kan bruke timeout argument for å begrense utvalget ventetid.

 struct timeval {
           long    tv_sec;         /* seconds */
           long    tv_usec;        /* microseconds */
       };

int select(int nfds, fd_set *readfds, fd_set *writefds,
              fd_set *exceptfds, struct timeval *timeout);

Det er ganske enkelt å begrense tidsavbruddet til 80msec og sende den nødvendige pakken.

Svarte 11/10/2009 kl. 16:23
kilden bruker

Cookies help us deliver our services. By using our services, you agree to our use of cookies. Learn more