#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