.\" Hey Emacs! This file is -*- nroff -*- source. .\" .\" 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 .\" .\" Translated into Spanish Wed Jan 14 1998 by Gerardo Aburruzaga .\" García .\" .TH NANOSLEEP 2 "10 abril 1996" "Linux 2.0.30" "Manual del Programador de Linux" .SH NOMBRE nanosleep \- hace una pausa en la ejecución durante un tiempo especificado .SH SINOPSIS .B #include .sp \fBint nanosleep(const struct timespec *\fIreq\fB, struct timespec *\fIrem\fB); .fi .SH DESCRIPCIÓN .B nanosleep retarda la ejecución del programa durante al menos el tiempo especificado en .IR *req . La función puede regresar antes si se ha mandado una señal al proceso. En este caso, devuelve \-1, pone \fIerrno\fP a .BR EINTR , y escribe el tiempo restante en la estructura apuntada por .IR rem a menos que .I rem sea .BR NULL . El valor de .I *rem puede emplearse para llamar a .B nanosleep de nuevo y completar la pausa especificada. La estructura .I timespec se emplea para especificar intervalos de tiempo con precisión de nanosegundo. Se especifica en .I y tiene la forma .sp .RS .nf .ne 12 .ta 8n 16n 32n struct timespec { time_t tv_sec; /* segundos */ long tv_nsec; /* nanosegundos */ }; .ta .fi .RE .PP El valor del campo de nanosegundos debe estar en el rango de 0 a 999 999 999. Comparado con .BR sleep (3) y .BR usleep (3), .B nanosleep tiene la ventaja de no afectar a ninguna señal, está normalizado por POSIX, proporciona una resolución del temporizador mayor, y permite que un `sleep' que ha sido interrumpido por una señal continúe más fácilmente. .SH ERRORES En caso de un error o excepción, la llamada al sistema .B nanosleep devuelve \-1 en vez de 0 y pone en .I errno uno de los valores siguientes: .TP .B EINTR La pausa ha sido interrumpida por una señal no bloqueante que ha sido mandada al proceso. El tiempo restante de sueño ha sido escrito en *\fIrem\fP de modo que el proceso pueda llamar fácilmente de nuevo a .B nanosleep para continuar así con la pausa. .TP .B EINVAL El valor en el campo .I tv_nsec no estaba en el rango de 0 a 999\ 999\ 999 ó .I tv_sec era un número negativo. .SH FALLOS La implementación actual de .B nanosleep está basada en el mecanismo normal del temporizador del núcleo, que tiene una resolución de 1/\fIHZ\fP\ s (i.e., 10\ ms en Linux/i386 y 1\ ms en Linux/Alpha). Por lo tanto, .B nanosleep hace una pausa siempre de al menos el tiempo especificado, empero puede tardar hasta 10 ms más hasta que el proceso sea de nuevo ejecutable. Por la misma razón, el valor devuelto en *\fIrem\fP en el caso de una señal enviada, se redondea normalmente al siguiente múltiplo más grande de 1/\fIHZ\fP\ s. Como algunas aplicaciones requieren pausas mucho más precisas (p. ej., para controlar algún hardware que requiere respuestas en tiempo real), .B nanosleep también es capaz de pausas cortas de alta precisión. Si el proceso se planifica bajo una política de tiempo real como .I SCHED_FIFO o .IR SCHED_RR , entonces se harán pausas de hasta 2\ ms como las esperas ocupadas con precisión de microsegundo. .SH "CONFORME A" POSIX.1b (antes, POSIX.4). .SH "VÉASE TAMBIÉN" .BR sleep (3), .BR usleep (3), .BR sched_setscheduler (2), .BR timer_create (2)