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

EOVERFLOW
    Czas ten nie może być reprezentowany jako wartość time_t. Błąd może wystąpić, gdy plik wykonywalny z 32-bitowym time_t działa na 64-bitowym jądrze, a czas to 2038-01-19 03:14:08 UTC lub później. Jednakże, gdy czas systemowy jest poza zakresem time_t w innych sytuacjach, to zachowanie jest niezdefiniowane.

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.

WERSJE
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. Systemy Linux zwykle przestrzegają wymagania POSIX, że wartość ta ma ignorować sekundy przestępne, dzięki czemu zgodne systemy spójnie ją interpretują; zob. POSIX.1-2018 Rationale A.4.16.

Aplikacje, które mogą działać po roku 2038, powinny używać ABI z time_t szerszym niż 32 bity; zob. time_t(3type).

  Różnice biblioteki C/jądra
Na niektórych architekturach, implementacja time() jest zapewniona w vdso(7).

STANDARDY
C11, POSIX.1-2024.

HISTORIA
SVr4, 4.3BSD, C89, POSIX.1-2001, V7.

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ść.

ZOBACZ TAKŻE
date(1), gettimeofday(2), ctime(3), ftime(3), time(7), vdso(7)

TŁUMACZENIE
Tłumaczenie niniejszej strony podręcznika: 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 (https://www.gnu.org/licenses/gpl-3.0.html) 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.