82.1. sleep

Odkazy:

#include <unistd.h>
unsigned int sleep(unsigned int seconds); 
 unsigned int seconds;

Funkci se předává jako jediný parametr doba v sekundách o kterou chceme pozdržet vykonávání programu, program uspat. Jako návratovou hodnotu dostaneme 0, je-li vše v pořádku, nebo nenulové číslo které nám sděluje, kolik sekund do námy požadované doby zbývá. To v případě, kdy je program ze spánku probuzen předčasně jinou událostí.

Musíme tedy počítat s tím, že se program „probudí“ dříve něž jsme požadovali. Pokud chceme lepší kód, můžeme použít následující kontstrukci která opakovaně požaduje sleep dokud není vyčerpán celkový požadovaný čas. I přesto ale musíme mít na paměti že celkový "quote" prospaný čas nemusí přesně sedět. Bude to kvůli kódu navíc a kvůli nepřesnostem kdy žádáme o spánek v celých sekundách ale probuzeni můžeme být v zlomcích sekund.

for (t = tot_time_to_sleep; (tleft = sleep(t)) > 0 && errno == EINTR; t = left);

Následující kód nebyl odzkoušen.

for (n=10; n > 0 && errno == EINTR; n=sleep(n));

funkce sleep