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?
Er mulig å bruke nanosleep i en uendelig løkke med å velge ()?
stemmer
0
1 svar
stemmer 3
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.