table of contents
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¶
- 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-2008.
HISTORIA¶
SVr4, 4.3BSD, C89, POSIX.1-2001.
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¶
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.
2 maja 2024 r. | Linux man-pages (niewydane) |