table of contents
other sections
TIMES(2) | Podręcznik programisty Linuksa | TIMES(2) |
NAZWA¶
times - pobiera czasy procesówSKŁADNIA¶
#include <sys/times.h>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 jest ustawiana wartość zmiennej errno.BŁĘDY¶
- EFAULT
- tms wskazuje na pamięć poza przestrzenią adresową procesu.
ZGODNE Z¶
SVr4, BSD 4.3, POSIX.1-2001.UWAGI¶
Liczbę tyknięć zegara na sekundę można uzyskać, używając: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.
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 3.40 projektu Linux man-pages. Opis projektu oraz informacje dotyczące zgłaszania błędów można znaleźć pod adresem http://www.kernel.org/doc/man-pages/.TŁUMACZENIE¶
Autorem polskiego tłumaczenia niniejszej strony podręcznika man jest Robert Luberda <robert@debian.org>. Polskie tłumaczenie jest częścią projektu manpages-pl; uwagi, pomoc, zgłaszanie błędów na stronie http://sourceforge.net/projects/manpages-pl/. Jest zgodne z wersją 3.40 oryginału.2012-04-16 | Linux |