Sto eseguendo questo ciclo per controllare e stampare alcune cose ogni secondo. Tuttavia, poiché i calcoli richiedono forse alcune centinaia di millisecondi, il tempo stampato a volte salta un secondo.
Esiste un modo per scrivere un ciclo tale che mi viene garantito di ottenere una stampa ogni secondo? (A condizione, ovviamente, che i calcoli nel ciclo richiedano meno di un secondo :))
while true; do
TIME=$(date +%H:%M:%S)
# some calculations which take a few hundred milliseconds
FOO=...
BAR=...
printf '%s %s %s\n' $TIME $FOO $BAR
sleep 1
done
sched(7)
nell'API (POSIX: vedi <sched.h>
e pagine collegate da lì), in pratica non puoi avere garanzie in tempo reale di questo modulo.