Provided by: manpages-pl-dev_4.27.0-1_all 

NAZWA
times - pobiera czasy procesów
BIBLIOTEKA
Standardowa biblioteka C (libc, -lc)
SKŁADNIA
#include <sys/times.h>
clock_t times(struct tms *buf);
OPIS
times() przechowuje bieżące czasy wykonywania procesu w struct tms, do której prowadzi buf. struct tms
jest zdefiniowana w <sys/times.h> następująco:
struct tms {
clock_t tms_utime; /* czas w przestrzeni użytkownika */
clock_t tms_stime; /* czas systemowy */
clock_t tms_cutime; /* czas w przestrzeni użytkownika dla dzieci*/
clock_t tms_cstime; /* czas systemowy dzieci */
};
Pole tms_utime zawiera czas CPU spędzony na wykonywaniu instrukcji procesu wywołującego tę funkcję. Pole
tms_stime zawiera czas CPU spędzony w systemie podczas wykonywania zadań zleconych przez proces.
Pole tms_cutime zawiera sumę tms_utime i tms_cutime wartości dla wszystkich dzieci, na które proces
czekał. Pole tms_cstime zawiera sumę wartości tms_stime i tms_cstime dla wszystkich dzieci, na które
proces czekał.
Czas zakończonych procesów-dzieci (i ich potomków) jest dodawany w momencie, gdy wait(2) lub waitpid(2)
zwrócą ich identyfikatory procesu. W szczególności nigdy nie zostaną policzone czasy wnuków, na które
dzieci nie poczekały.
Wszystkie raportowane czasy są wyrażone w tyknięciach zegara.
WARTOŚĆ ZWRACANA
times() zwraca liczbę tyknięć zegara, które upłynęły od pewnego wybranego punktu przeszłości. Wartość
zwracana może przekroczyć dopuszczalny zakres typu clock_t. W razie błędu zwracane jest (clock_t) -1 i
odpowiednio ustawiane errno, wskazując błąd.
BŁĘDY
EFAULT tms wskazuje na pamięć poza przestrzenią adresową procesu.
WERSJE
Pod Linuksem argument buf może mieć wartość NULL, w czego wyniku times() tylko zwróci wynik funkcji.
Jednakże POSIX nie określa takiego zachowania i większość innych implementacji uniksowych wymaga, aby
parametr buf nie był NULL-em.
STANDARDY
POSIX.1-2008.
HISTORIA
POSIX.1-2001, SVr4, 4.3BSD.
W standardzie POSIX-1996 symbol CLK_TCK (zdefiniowany w <time.h>) jest uznany za starzejący się. Obecnie
jest przestarzały.
Przed Linuksem 2.6.9, jeżeli obsługa sygnału SIGCHLD jest ustawiona na SIG_IGN, to czasy zakończonych
dzieci są automatycznie zawarte w polach tms_cstime i tms_cutime, mimo że POSIX.1-2001 określa, że tak
się powinno się zdarzyć tylko wtedy, gdy proces czeka na swoje dzieci za pomocą wywołania systemowego
wait(2). To niedostosowanie do standardu jest poprawione w Linuksie w wersji 2.6.9 i kolejnych.
Funkcja times() zwraca liczbę tyknięć zegara, które upłynęły od pewnego wybranego punktu przeszłości. Pod
Linuksem ów „pewien wybrany punkt w przyszłości” jest różny w różnych wersjach jądra systemu. W Linuksie
2.4 i wcześniejszych tym punktem jest moment uruchomienia systemu. Od wersji 2.6 Linuksa tym punktem jest
(2^32/HZ) - 300 sekund przed momentem uruchomienia systemu. Ta wariantywność pomiędzy wersjami jądra (i
pomiędzy różnymi implementacjami Uniksa) połączona z faktem, że wartość zwracana może przekroczyć
dopuszczalny zakres typu clock_t, oznacza, że przenośne aplikacje powinny unikać używania tej wartości.
Aby zmierzyć upływ czasu, lepiej używać clock_gettime(2).
SVr1-3 zwraca long, a członkowie struktury są typu time_t, chociaż przechowują tyknięcia zegara, a nie
sekundy od początku epoki. V7 używał typu long dla członków struktury, ponieważ nie miał jeszcze wtedy
typu time_t.
UWAGI
Liczbę tyknięć zegara na sekundę można uzyskać, używając:
sysconf(_SC_CLK_TCK);
Proszę zauważyć, że clock(3) także zwraca wartości typu clock_t, które są wyrażone w jednostkach
CLOCKS_PER_SEC, a nie w tyknięciach zegara, używanych przez times().
USTERKI
Ograniczenie w konwencjach tego wywołania systemowego na niektórych architekturach systemowych (zwłaszcza
i386) oznacza, że w Linuksie 2.6 istnieje niewielkie okno czasowe (41 sekund) zaraz po uruchomieniu
systemu, w którym times() może zwrócić -1, niepoprawnie wskazując na wystąpienie błędu. Ten sam problem
może wystąpić, kiedy wartość zwracana zostanie zawinięta, gdyż przekroczy maksymalną dopuszczalną wartość
dla typu clock_t.
ZOBACZ TAKŻE
time(1), getrusage(2), wait(2), clock(3), sysconf(3), time(7)
TŁUMACZENIE
Tłumaczenie niniejszej strony podręcznika: Robert Luberda <robert@debian.org> 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.
Linux man-pages 6.9.1 2 maja 2024 r. times(2)