A. Función kill
La función kill permite enviar una señal a un proceso; si no se especifica cuál, será, por defecto, la señal de terminación. Ésta pondrá fin a aquellos procesos que no la capturen; para los que sí lo hagan y con los que se desee terminar, será necesario enviarles kill con la señal 9, ya que ésta no puede ser ni capturada ni ignorada. Con el mismo fin puede emplearse el comando kill.
La lista completa de señales puede encontrarse en el fichero </usr/include/linux/signal. h>. La principal diferencia entre la función y el comando homónimos reside en que el comando no se utiliza dentro de los programas de aplicación, y sí en la mayoría de las llamadas realizadas desde la línea de comandos.
La definición de la función kill es:
include <signal.h>
int kill (int pid, int sig);
donde pid es el número del proceso al que se quiere enviar la señal. En función del valor de pid, la tarea realizada será diferente:
- Si pid > 0, la señal sig se envía
al proceso con identificador pid.
- Si pid = -1, la señal sig se envía
a cualquier proceso de la tabla de procesos, excepto al
primero.
- Si pid < -1, la señal sig se
envía a cualquier proceso del mismo grupo del pid.
Si la operación se realiza con éxito, la función devuelve 0; en caso contrario, el valor devuelto es -1. Se debe tener en cuenta que, cuando se envía la señal a varios procesos, la operación tiene éxito cuando al menos uno de ellos recibe la señal. En este caso, no puede determinarse qué procesos capturaron la señal o si todos lo hicieron.
Los errores más frecuentes se deben, entre otros, al envío de una señal no válida, a que el pid indicado no existe o a que el proceso o procesos a los que se envía la señal no pertenecen a quien intenta enviarles la señal, es decir, que el propietario del proceso no es el de los procesos o el superusuario.
En la práctica, los usos más frecuentes de kill suelen tener uno de estos dos propósitos:
- Terminar con uno o más procesos, para lo que
se envía SIGTERM, aunque a veces se emplea también
SIGQUIT o SIGIO, si se desea obtener un fichero
core.
- Probar el código de gestión de errores de un
nuevo programa mediante la simulación de señales; por ejemplo,
SIGFPE.
Hay 1 opinión. Opina sobre este curso.
| Cursos | Valoración | Alumnos | Vídeo | |
|---|---|---|---|---|
|
Redacción eficaz de documentos de empresa ¿Sus memorandos son incomprensibles para sus compañeros de trabajo? ¿Su director no entiende sus informes? No se preocupe: con este sencillo curso gratis obtendrá las cla... [22/04/02] |
|
51.031 | ||
|
Introducción al Lenguaje C El lenguaje C apareció en 1972, en el diseño del sistema operativo UNIX. Este lenguaje, que en la actualidad está bajo el estandar ANSI C, se ha utilizado para diseñar ho... [10/05/04] |
|
25.607 | ||
|
PHP y MySQL. Aplicaciones Web: HTML II (tercera parte) Programación de aplicaciones Web con PHP y MySQL. Ahora continuaremos con el estudio de las páginas Web HTML. Estudiaremos las listas en HTML. ... [02/12/08] |
|
711 | ||
Publicar en
del.icio.us
digg
meneame