Как работает приложение будильника?
Мой телефон мертв, и у меня нет будильника. Вот мое решение (в Баше), чтобы я проснулся завтра утром
while [ 1 ]; do
TIME=$(date +'%H'):$(date +'%M')
echo $TIME
if [ $TIME == "06:15" ];then
osascript -e "set Volume 3"
open /Path/To/MyFavouriteSong.mp3
break
fi
sleep 58
done
Этот код работает хорошо (на Mac OSX 10.12.2
и пока мой компьютер не засыпает) но это кажется несколько глупым.
Мне непонятно, как процессор измеряет определенное время. Я не знаю, тестирует ли приложение будильника каждые 58 секунд (или другое время ближе, но все же короче, чем одна минута), если уже пора подать сигнал или есть какой-то механизм для ЦП, чтобы послать сигнал для программы в определенное время.
1 ответ
Здесь https://unix.stackexchange.com/questions/64191/how-do-the-internals-of-the-cron-daemon-work объясняется (на примере cron), как вы можете реализовать программу, что делает что-то каждые X секунд / минут. Это делается аналогично вашему подходу.
Если ваш вопрос был в том, как процессор знает текущее время: обычно на материнской плате установлены аппаратные часы, работающие так же, как обычные кварцевые наручные часы, которые могут связываться с процессором. Процессор может спрашивать эти часы каждую мс или сколько угодно, какое точное время. Это причина, по которой на материнской плате обычно находится батарейка типа "таблетка": чтобы аппаратные часы работали.