Я запускаю цю петлю, щоб перевірити та надрукувати деякі речі кожну секунду. Однак, оскільки обчислення займають, можливо, кілька сотень мілісекунд, друкований час іноді пропускає секунду.
Чи є спосіб написати таку петлю, що я гарантовано отримую роздруківку щосекунди? (За умови, звичайно, що обчислення в циклі займають менше секунди :))
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)
API (POSIX: див. <sched.h>
Та пов’язані звідти сторінки), ви, як правило, не можете мати гарантії цієї форми в режимі реального часу.