table of contents
- bookworm-backports 1:4.24.0-2~bpo12+1
- testing 1:4.24.0-2
- unstable 1:4.25.0-1
time(2) | System Calls Manual | time(2) |
NAZWA¶
time - pobiera czas w sekundach
BIBLIOTEKA¶
Standardowa biblioteka C (libc, -lc)
SKŁADNIA¶
#include <time.h>
time_t time(time_t *_Nullable tloc);
OPIS¶
time() zwraca czas jako liczbę sekund od Epoki, tj. 1970-01-01 00:00:00 +0000 (UTC).
Jeśli tloc nie jest równe NULL, to zwracana wartość jest również zapisywana w pamięci wskazywanej przez tloc.
WARTOŚĆ ZWRACANA¶
W przypadku pomyślnego zakończenia, zwracana jest wartość liczbowa dla czasu w sekundach od Epoki. W przypadku błędu, zwracane jest ((time_t) -1) i ustawiane errno wskazując błąd.
BŁĘDY¶
- EFAULT
- tloc wskazuje poza dostępną dla użytkownika przestrzeń adresową (ale zob. BŁĘDY).
- W systemach, w których funkcja opakowująca time() z biblioteki C przywołuje implementację zapewnianą przez vdso(7) (czyli bez pułapki do jądra), nieprawidłowy adres może zamiast tego wyzwolić sygnał SIGSEGV.
STANDARDY¶
SVr4, 4.3BSD, C99, POSIX.1-2001. POSIX nie określa żadnych sytuacji, w których może wystąpić błąd.
UWAGI¶
POSIX.1 definiuje liczbę sekund od Epoki jako wzór, który w sposób przybliżony oblicza liczbę sekund pomiędzy zadanym czasem a Epoką. Wzór ten bierze pod uwagę fakt, że wszystkie lata podzielne przez 4 są przestępne, lecz lata, które są podzielne przez 100 nie są latami przestępnymi chyba, że są podzielne również przez 400, gdy są jednak przestępne. Wartość ta nie jest tym samym, co rzeczywista liczba sekund pomiędzy zadanym czasem a Epoką, gdyż istnieją sekundy przestępne oraz zegary nie muszą być synchronizowane z czasem standardowym. Ma to na celu spójną interpretację dla liczby sekund od Epoki; dodatkowe uzasadnienie można znaleźć w POSIX.1-2008 Rationale A.4.15.
W Linuksie, wywołanie do time() gdy tloc określono jako NULL, nie może zawieść z błędem EOVERFLOW, nawet przy ABI, w którym time_t jest 32-bitową liczbą całkowitą ze znakiem i gdy zegar osiągnie lub przekroczy 2**31 sekund (2038-01-19 03:14:08 UTC, ignorując sekundy przestępne; POSIX.1 zezwala, ale nie wymaga wystąpienia błędu EOVERFLOW, gdy sekundy od Epoki nie zmieszczą się w time_t). Zachowanie w Linuksie jest natomiast niezdefiniowane, gdy czas systemowy wykroczy poza zakres time_t. Aplikacje, które mogą działać po roku 2038, powinny używać ABI z time_t szerszym niż 32 bity.
USTERKI¶
Błędy zwracane przez to wywołanie systemowe są nierozróżnialne od pomyślnego zgłoszenia czasu będącego kilka sekund przed Epoką, dlatego funkcja opakowująca z biblioteki C nigdy nie ustawia errno jako wyniku tego wywołania.
Argument tloc wychodzi z użycia i w nowym kodzie zawsze powinien wynosić NULL. Gdy tloc wynosi NULL, wywołanie nie może zawieść.
Różnice biblioteki C/jądra¶
Na niektórych architekturach, implementacja time() jest zapewniona w vdso(7).
ZOBACZ TAKŻE¶
date(1), gettimeofday(2), ctime(3), ftime(3), time(7), vdso(7)
TŁUMACZENIE¶
Autorami polskiego tłumaczenia niniejszej strony podręcznika są: Przemek Borys <pborys@dione.ids.pl>, Andrzej Krzysztofowicz <ankry@green.mf.pg.gda.pl> i Michał Kułach <michal.kulach@gmail.com>
Niniejsze tłumaczenie jest wolną dokumentacją. Bliższe informacje o warunkach licencji można uzyskać zapoznając się z GNU General Public License w wersji 3 lub nowszej. Nie przyjmuje się ŻADNEJ ODPOWIEDZIALNOŚCI.
Błędy w tłumaczeniu strony podręcznika prosimy zgłaszać na adres listy dyskusyjnej manpages-pl-list@lists.sourceforge.net.
29 grudnia 2022 r. | Linux man-pages 6.03 |