Wie funktioniert eine Weckeranwendung?

517
Remi.b

Mein Telefon ist tot und ich habe keinen Wecker. Hier war meine Lösung (in Bash), um sicherzustellen, dass ich morgen früh aufwachen werde

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 

Dieser Code funktioniert gut (an Mac OSX 10.12.2und solange mein Computer nicht in den Ruhezustand wechselt), aber er fühlt sich etwas dumm an.

Mir ist unklar, wie die CPU eine bestimmte Zeit misst. Ich weiß nicht, ob eine Wecker-App normalerweise alle 58 Sekunden (oder eine andere Zeitspanne näher, aber immer noch kürzer als eine Minute) prüft, ob der Alarm bereits ertönt oder ob die CPU einen Mechanismus zum Senden eines Weckers hat Signal zu einem bestimmten Zeitpunkt an das Programm senden.

0
Ich sehe eine enge Abstimmung, weil "diese Frage nicht in Bezug auf Computerhardware oder -software innerhalb des in der Hilfe definierten Umfangs liegt." Passt die Frage besser zu StackOverflow oder anderswo? Remi.b vor 7 Jahren 0
Sehen Sie sich vielleicht an, wie _cron_-Dämonen implementiert werden. grawity vor 7 Jahren 0
Die enge Abstimmung war meine. Dies könnte eine grenzübergreifende Frage sein, also wollte ich die Schließung organisch sein lassen, anstatt einen Kommentar zu posten und andere Wähler zu beeinflussen. Ich denke, dass Programmierfragen außerhalb des Themas liegen und die Funktionsweise aller Weckerprogramme zu breit ist. Ich weiß nicht wirklich, welche die beste Seite dafür ist, also habe ich keine vorgeschlagen. SO scheint logisch zu sein, aber ich bin kein großer Benutzer dieser Seite und weiß nicht, wie gut das dort passt. Wenn dieser Kommentar Rückmeldungen auf das Thema enthält, werde ich die Schlussabstimmung zurückziehen. fixer1234 vor 7 Jahren 0
Verwenden Sie einen Cron-Job. DavidPostill vor 7 Jahren 0
@ fixer1234 IMHO der Kern der Frage ist * wie macht die CPU eine bestimmte Zeit? * und ich halte das für ein Thema. Ein bisschen Bearbeitung, um die Frage zu fokussieren, würde allerdings helfen. Twisty Impersonator vor 7 Jahren 0

1 Antwort auf die Frage

4
Jounathaen

Hier wird https://unix.stackexchange.com/questions/64191/how-do-the-internals-of-the-cron-daemon-work (am Beispiel von cron) erklärt, wie man ein Programm implementieren könnte macht etwas alle X Sekunden / Minuten. Dies geschieht ähnlich wie bei Ihrem Ansatz.

Wenn Ihre Frage war, wie die CPU die aktuelle Uhrzeit kennt: Normalerweise befindet sich auf dem Mainboard eine Hardware-Uhr, die auf dieselbe Weise arbeitet wie eine herkömmliche Quarz-Armbanduhr, die mit der CPU kommunizieren kann. Die CPU kann diese Uhr alle Millisekunden oder was auch immer nach der genauen Uhrzeit fragen. Aus diesem Grund befindet sich normalerweise eine Knopfzellenbatterie auf dem Mainboard: Damit die Hardware-Uhr läuft.