Provided by:
manpages-pl-dev_20060617-1_all 
NAZWA
times - pobiera czasy procesów
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 tikach zegara
WARTOŚĆ ZWRACANA
times() zwraca liczbę tyknięć zegara, które upłynęły od pewnego
wybranego punktu przeszłości. Dla Linuksa 2.4 i wcześniejszych tym
punktem jest moment uruchomienia systemu. Od wersji 2.6 Linuksa tym
punktem jest (2^32/HZ) - 300 (tj. około 429 milionów) sekund przed
momentem uruchomienia systemu. Wartość zwracana może przekroczyć
dopuszczalny zakres typu clock_t. W razie błędu zwracane jest (clock_t)
-1 i odpowiednio jest ustawiana wartość zmiennej errno.
UWAGI
Liczbę tyknięć zegara na sekundę można uzyskać, używając
sysconf(_SC_CLK_TCK);
W standardzie POSIX-1996 symbol CLK_TCK (zdefiniowany w <time.h> jest
uznany za starzejący się. Obecnie jest przestarzały.
W wersjach Linuksa przed 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 1003.1-2001
określa, że tak się powinno się zdarzyć tylko wtedy, gdy proces czeka
na swoje dzieci wywołując funkcję wait(). To niedostosowanie do
standardu jest poprawione w Linuksie 2.6.9 i następnych wersjach.
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.
Proszę zauważyć, że clock(3) zwraca wartości typu clock_t, które są
wyrażone nie w tyknięciach zegara, ale w CLOCKS_PER_SEC.
ZGODNE Z
SVr4, SVID, POSIX, X/OPEN, 4.3BSD
UWAGI HISTORYCZNE
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.
W starszych systemach liczba tyknięć zegara na sekundę jest podawana w
zmiennej HZ.
ZOBACZ TAKŻE
time(1), getrusage(2), wait(2), clock(3), sysconf(3), time(7)