Provided by: manpages-pl-dev_4.23.1-1_all bug

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

       Autorami   polskiego   tłumaczenia   niniejszej  strony  podręcznika  są:  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
       ⟨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⟩.