.\" Hey Emacs! This file is -*- nroff -*- source. .\" .\" 1999 PTM Przemek Borys .\" Last update: A. Krzysztofowicz , Jan 2002, .\" manpages 1.47 .\" .\" Copyright (C) Markus Kuhn, 1996 .\" .\" This is free documentation; you can redistribute it and/or .\" modify it under the terms of the GNU General Public License as .\" published by the Free Software Foundation; either version 2 of .\" the License, or (at your option) any later version. .\" .\" The GNU General Public License's references to "object code" .\" and "executables" are to be interpreted as the output of any .\" document formatting or typesetting system, including .\" intermediate and printed output. .\" .\" This manual is distributed in the hope that it will be useful, .\" but WITHOUT ANY WARRANTY; without even the implied warranty of .\" MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the .\" GNU General Public License for more details. .\" .\" You should have received a copy of the GNU General Public .\" License along with this manual; if not, write to the Free .\" Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111, .\" USA. .\" .\" 1996-04-10 Markus Kuhn .\" First version written .\" .TH NANOSLEEP 2 1996-04-10 "Linux 1.3.85" "Podręcznik programisty Linuksa" .SH NAZWA nanosleep \- zatrzymanie wykonywania na określony czas .SH SKŁADNIA .B #include .sp \fBint nanosleep(const struct timespec *\fIreq\fB, struct timespec *\fIrem\fB); .fi .SH OPIS \fI Uwaga! To tłumaczenie może być nieaktualne!\fP .PP .B nanosleep opóźnia wykonywanie programu przynajmniej o czas podany w .IR *req . Funkcja może zakończyć się wcześniej, jeśli procesowi dostarczono sygnał. W tym wypadku zwraca \-1, ustawia \fIerrno\fR na wartość .B EINTR i zapisuje pozostały czas do do struktury wskazywanejj przez .IR rem , o ile .I rem nie było równe .BR NULL . Wartość .I *rem można wykorzystać do ponownego wywołania .B nanosleep i dokończenia zadanej pauzy. Do podawania interwałów czasowych z dokładnością nanosekundową, używana jest struktura .IR timespec , zdefiniowana w .IR , a mająca postać .sp .RS .nf .ne 12 .ta 8n 16n 32n struct timespec { time_t tv_sec; /* sekundy */ long tv_nsec; /* nanosekundy */ }; .ta .fi .RE .PP Wartość pola nanosekund musi być w zakresie od 0 do 999 999 999. W porównaniu ze .BR sleep (3) i .BR usleep (3), .B nanosleep jest lepsze, gdyż nie wpływają na nie sygnały i jest zestandaryzowane przez POSIX. Ponadto daje lepszą rozdzielczość czasową i pozwala na łatwiejszą kontynuację uśpienia po przerwaniu przez sygnał. .SH BŁĘDY W wypadku błędu, lub wyjątku, .B nanosleep zwraca zamiast 0 wartość \-1 i ustawia .I errno na jedną z następujących wartości: .TP .B EINTR Pauza została przerwana nieblokowanym sygnałem, dostarczonym procesowi. Pozostały czas pauzy został zapisany do *\fIrem\fR, więc proces może łatwo wywołać ponownie .B nanosleep i dokończyć pauzę. .TP .B EINVAL Wartość z pola .I tv_nsec nie była w zakresie 0 to 999\ 999\ 999 lub .I tv_sec było ujemne. .SH USTERKI Obecna implementacja .B nanosleep jest oparta o mechanizm zwykłego zegara w jądrze, którego rozdzielczość wynosi 1/\fIHZ\fR\ s (np., dla Linuksa/i386 10\ ms i 1\ ms dla Linuksa/Alpha). Tak więc .B nanosleep przerywa wykonanie zawsze przynajmniej na zadany czas, choć może wznowić działanie programu do 10ms później niż podano. Z tej samej przyczyny, wartość zwracana w *\fIrem\fR przy pojawieniu się sygnału, jest zaokrąglana do wielokrotności 1/\fIHZ\fR\ s. Jako, że niektóre aplikacje wymagają bardziej dokładnych pauz (np. aby sterować sprzętem o krytycznych zależnościach czasowych), .B nanosleep może też dawać krótkie, bardzo dokładne pauzy. Jeśli proces podlega szeregowaniu zadań według polityki czasu rzeczywistego, takiej jak .I SCHED_FIFO czy .IR SCHED_RR , to wtedy pauzy do 2\ ms będą wykonywane jako oczekiwania zajętości (busy waits) z precyzją mikrosekundową. .SH "ZGODNE Z" POSIX.1b (poprzednio POSIX.4) .SH "ZOBACZ TAKŻE" .BR sleep (3), .BR usleep (3), .BR sched_setscheduler (2), .BR timer_create (2) .SH "INFORMACJE O TŁUMACZENIU" Powyższe tłumaczenie pochodzi z nieistniejącego już Projektu Tłumaczenia Manuali i \fImoże nie być aktualne\fR. W razie zauważenia różnic między powyższym opisem a rzeczywistym zachowaniem opisywanego programu lub funkcji, prosimy o zapoznanie się z oryginalną (angielską) wersją strony podręcznika za pomocą polecenia: .IP man \-\-locale=C 2 nanosleep .PP Prosimy o pomoc w aktualizacji stron man \- więcej informacji można znaleźć pod adresem http://sourceforge.net/projects/manpages\-pl/.