Provided by: manpages-pl-dev_4.15.0-9_all bug

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 tyknięciach zegara.

WARTOŚĆ ZWRACANA

       times()  returns the number of clock ticks that have elapsed since an arbitrary  point  in
       the  past.   The  return value may overflow the possible range of type clock_t.  On error,
       (clock_t) -1 is returned, and errno is set to indicate the error.

BŁĘDY

       EFAULT tms wskazuje na pamięć poza przestrzenią adresową procesu.

ZGODNE Z

       POSIX.1-2001, POSIX.1-2008, SVr4, 4.3BSD.

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

       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)  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().

       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).

   Historia
       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.

BŁĘDY

       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)

O STRONIE

       Angielska  wersja  tej  strony  pochodzi  z  wydania  5.13  projektu Linux man-pages. Opis
       projektu, informacje dotyczące zgłaszania błędów oraz  najnowszą  wersję  oryginału  można
       znaleźć pod adresem https://www.kernel.org/doc/man-pages/.

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⟩.