Aus dem Man-Setimer meines Systems (Hervorhebung von mir):
Das System stellt jedem Prozess drei Intervallzeitgeber zur Verfügung, die jeweils in einer eindeutigen Zeitdomäne dekrementieren . Wenn ein Timer abgelaufen ist, wird ein Signal an den Prozess gesendet, und der Timer wird (möglicherweise) neu gestartet.
ITIMER_REAL dekrementiert in Echtzeit und liefert SIGALRM nach Ablauf.
ITIMER_VIRTUAL verringert sich nur, wenn der Prozess ausgeführt wird und liefert SIGVTALRM nach Ablauf.
Haben Sie gerade übersehen, dass Ihr Prozess nicht ausgeführt wird, während Sie schlafen? Es wird sehr lange dauern, bis du die tatsächlich genutzte Zeit mit dieser Schleife aufaddierst.