time - Zeit in Sekunden abfragen
Standard-C-Bibliothek (
libc,
-lc)
#include <time.h>
time_t time(time_t *_Nullable tloc);
time() gibt die Zeit als Anzahl der Sekunden seit dem Beginn der Unixzeit
am 1.1.1970, 00:00:00 +0000 (UTC) an.
Falls
tloc nicht NULL ist, wird der Rückgabewert auch im Speicher
an der Stelle abgelegt, auf die
tloc zeigt.
Bei Erfolg wird die Zeit seit Beginn der Unixzeit in Sekunden
zurückgegeben. Tritt ein Fehler auf, wird
((time_t) -1)
zurückgegeben und
errno gesetzt, um den Fehler anzuzeigen.
- EFAULT
-
tloc zeigt außerhalb Ihres verfügbaren
Adressbereichs (siehe aber auch FEHLER).
- Auf Systemen, auf denen die
C-Bibliothek-time()-Wrapper-Funktion eine von vdso(7)
bereitgestellte Implementierung aufruft (so dass es keine Verbindung in
den Kernel gibt), kann eine ungültige Adresse stattdessen ein
SIGSEGV-Signal auslösen.
SVr4, 4.3BSD, C99, POSIX.1-2001. POSIX legt keine Fehlerbedingungen fest.
POSIX.1 definiert die
Sekunden seit Anfang der Unixzeit mittels einer
Formel, die die Anzahl der Sekunden zwischen einem bestimmten Zeitpunkt und
dem Anfang der »Unixzeit« abschätzt. Diese Formel
berücksichtigt die Tatsache, dass alle durch vier ohne Rest teilbaren
Jahre Schaltjahre sind. Alle durch 100 ohne Rest teilbaren Jahre sind keine
Schaltjahre, es sei denn, sie sind gleichzeitig durch 400 ohne Rest teilbar,
dann sind es wiederum Schaltjahre. Dieser Wert entspricht nicht der
tatsächlichen Anzahl an Sekunden zwischen dem angegebenen Zeitpunkt und
dem Anfang der »Unixzeit«, weil Schaltsekunden nicht
berücksichtigt werden und es nicht erforderlich ist, dass Systemuhren
mit einer Standardreferenz synchronisiert werden. Das Ziel dieser Festlegung
ist eine konsistente Interpretation des Sekundenwertes seit Anfang der
»Unixzeit«. Siehe auch POSIX.1-2008 Rationale A.4.15 für
weitere Erläuterungen.
Unter Linux kann ein Aufruf von
time() nicht mit dem Fehler
EOVERFLOW fehlschlagen, wenn
tloc als NULL angegeben wurde, auch
nicht auf ABIs, bei denen
time_t eine vorzeichenbehaftete
32-Bit-Ganzzahl ist und die 2**31 Sekunden (2038-01-19 03:14:08 UTC,
Schaltsekunden werden ignoriert) erreicht oder überschreitet. (POSIX.1
erlaubt den Fehler
EOVERFLOW im Fall, dass die Sekunden seit der
Unixzeit nicht in
time_t passen, erfordert ihn jedoch nicht.)
Stattdessen ist das Verhalten unter Linux nicht definiert, wenn die Systemzeit
außerhalt des Bereichs von
time_t liegt. Anwendungen, die nach
2038 noch laufen sollen, sollten ABIs verwenden, bei denen
time_t
größer als 32 Bit ist.
Fehler, die von diesem Systemaufruf zurückgegeben werden, sind nicht von
erfolgreichen Berichten, dass die Zeit ein paar Sekunden
vor der
Unixzeit liegt, zu unterscheiden. Daher kann die C-Bibliothek-Wrapper-Funktion
errno nie als Ergebnis dieses Aufrufs setzen.
Das Argument
tloc ist veraltet und sollte in neuem Code immer NULL sein.
Wenn
tloc NULL ist, kann der Aufruf nicht fehlschlagen.
Auf einigen Architekturen wird eine Implementierung von
time() in einem
vdso(7) bereitgestellt.
date(1),
gettimeofday(2),
ctime(3),
ftime(3),
time(7),
vdso(7)
Die deutsche Übersetzung dieser Handbuchseite wurde von Michael Haardt
<
[email protected]>, Ralf Demmer <
[email protected]>, Chris Leick
<
[email protected]> und Helge Kreutzmann <
[email protected]>
erstellt.
Diese Übersetzung ist Freie Dokumentation; lesen Sie die
GNU
General Public License Version 3 oder neuer bezüglich der
Copyright-Bedingungen. Es wird KEINE HAFTUNG übernommen.
Wenn Sie Fehler in der Übersetzung dieser Handbuchseite finden, schicken
Sie bitte eine E-Mail an die
Mailingliste
der Übersetzer