Wann konnte ein Aufruf von time (NULL) unter Linux fehlschlagen?

7

Gemäß dieser Dokumentation Ссылка

für Zeit (NULL) "Wenn die Funktion die Kalenderzeit nicht abrufen konnte, wird ein Wert von -1 zurückgegeben."

Soll ich in meinem Code nach etwas suchen? Sicherlich muss etwas ziemlich falsch laufen, wenn die Zeit (NULL) die Zeit nicht abruft.

    
Salgar 15.10.2009, 11:59
quelle

4 Antworten

17

Sie können auf einem eingebetteten Gerät laufen, das keine Echtzeituhr hat.

Der glibc-Quellcode behauptet, dass der Zeitsyscall unter Linux nicht fehlschlagen kann:

%Vor%

und tatsächlich ist dies der Fall, wenn Sie sich die Kernel-Quelle anschauen:

%Vor%     
atomice 15.10.2009, 12:09
quelle
2

Die Ubuntu-Manpage sagt, dass time(2) aufgrund von EFAULT (" t points außerhalb Ihres zugänglichen Adressraums") fehlschlagen kann.

Die OSX-Manpage sagt, dass sie aus den gleichen Gründen fehlschlagen kann wie gettimeofday , also EFAULT und EPERM (nicht sicher, wie dies für time gilt).

Daher kann es nicht für das Argument von NULL , nach der Dokumentation der oben genannten Systeme fehlschlagen.

Auch POSIX gibt für diese Funktion keine Fehlerbedingungen an.

    
Alex B 15.10.2009 12:02
quelle
0

Sie haben etwas, das man Systemuhr nennt. Wenn das kaputt ist, wird das scheitern, obwohl es viele andere Gründe geben könnte.

    
aviraldg 15.10.2009 12:04
quelle
0

Der naheliegende Fall wäre ein System, dessen interne Uhr eine externe Initialisierung erfordert (unter Verwendung von zB NTP). Bis dies geschehen ist, kann die interne Uhr keine epoch-relativen Werte angeben, obwohl sie zum Messen von Intervallen verwendet werden kann. time_t ist epochrelativ und daher muss time(NULL) in diesem Fall fehlschlagen.

    
MSalters 15.10.2009 12:23
quelle

Tags und Links