.\" Copyright (c) 1994 Mike Battersby .\" based on work by faith@cs.unc.edu .\" .\" Permission is granted to make and distribute verbatim copies of this .\" manual provided the copyright notice and this permission notice are .\" preserved on all copies. .\" .\" Permission is granted to copy and distribute modified versions of this .\" manual under the conditions for verbatim copying, provided that the .\" entire resulting derived work is distributed under the terms of a .\" permission notice identical to this one .\" .\" Since the Linux kernel and libraries are constantly changing, this .\" manual page may be incorrect or out-of-date. The author(s) assume no .\" responsibility for errors or omissions, or for damages resulting from .\" the use of the information contained herein. The author(s) may not .\" have taken the same level of care in the production of this manual, .\" which is licensed free of charge, as they might when working .\" professionally. .\" .\" Formatted or processed versions of this manual, if unaccompanied by .\" the source, must acknowledge the copyright and authors of this work. .\" .\" Modified, aeb, 960424, 960621 .\" FIXME - error conditions need to be documented .\" Modified Mon Jun 10 21:00:42 1996 by Martin Schulze .\" Modified Wed Aug 27 21:09:52 1997 by Nicolás Lichtmaier .\" .\" Translated into Spanish Fri Jan 30 1998 by Gerardo Aburruzaga .\" García .\" Translation revised Wed Dec 30 1998 by Juan Piernas .\" .TH SIGNAL 2 "21 agosto 1997" "Linux 2.0" "Manual del Programador de Linux" .SH NOMBRE signal \- manejo de señales según C ANSI .SH SINOPSIS .B #include .sp 2 .BI "void (*signal(int " signum ", void (*" manejador ")(int)))(int);" .SH DESCRIPCIÓN La llamada al sistema .B signal instala un nuevo manejador de señal para la señal cuyo número es .I signum. El manejador de señal se establece como .IR manejador , que puede ser una función especificada por el usuario, o una de las siguientes macros: .RS .TP .B SIG_IGN No tener en cuenta la señal. .TP .B SIG_DFL Dejar la señal con su comportamiento predefinido. .RE .PP El argumento entero que se pasa a la rutina de manejo de señal es el número de la señal. Esto hace posible emplear un mismo manejador de señal para varias de ellas. Los manejadores de señales son rutinas que se llaman en cualquier momento en el que el proceso recibe la señal correspondiente. Usando la función .BR alarm (2), que envia una señal .B SIGALRM al proceso, es posible manejar fácilmente trabajos regulares. A un proceso también se le puede decir que relea sus ficheros de configuración usando un manejador de señal (normalmente, la señal es SIGHUP). .SH "VALOR DEVUELTO" .B signal devuelve el valor anterior del manejador de señal, o .B SIG_ERR si ocurre un error. .SH OBSERVACIONES No se pueden instalar manejadores para las señales .B SIGKILL ni .BR SIGSTOP . .PP Desde libc6, .B signal usa la semántica BSD y el comportamiento por defecto es no reasignar una señal a su comportamiento por defecto. Puede usar .B sysv_signal para obtener la semántica SysV. .PP Ambas, .BR signal " and " sysv_signal son rutinas de biblioteca construidas sobre .BR sigaction (2). .PP Si usted no entiende bien el prototipo del principio de esta página, puede ayudar el verlo separado así: .PP typedef void (*sighandler_t)(int); .br .BI "sighandler_t signal(int " signum ", sighandler_t " manejador ); .PP De acuerdo con POSIX, el comportamiento de un proceso es indefinido después de no hacer caso a una señal .BR SIGFPE ", " SIGILL " o " SIGSEGV que no ha sido generada por las funciones .BR kill (2) ni .BR raise (2) . La división entera por cero tiene un resultado indefinido. En algunas arquitecturas generará una señal .B SIGFPE. (También, el dividir el entero más negativo por \-1 puede generar SIGFPE.) No hacer caso a esta señal puede conducir a un bucle infinito. .PP De acuerdo con POSIX (B.3.3.1.3) no debe asignar SIG_IGN como acción para SIGCHLD. Aquí los comportamiento de BSD y SYSV difieren, provocando el fallo en Linux de aquellos programas BSD que asignan SIG_IGN como acción para SIGCHLD. .SH "CONFORME A" C ANSI .SH "VÉASE TAMBIÉN" .BR kill (1), .BR kill (2), .BR killpg (2), .BR pause (2), .BR raise (3), .BR sigaction (2), .BR signal (7), .BR sigsetops (3), .BR sigvec (2), .BR alarm (2)