Pregunta :¿Cómo envío una señal a otro proceso? ¿Me pueden explicar todas las opciones disponibles para enviar señales a un proceso en ambiente UNIX/Linux?
Respuesta :Puede enviar varias señales a los procesos utilizando uno de los métodos explicados en este artículo.
1. Enviar señal a un proceso usando Kill
Utilice el comando kill para enviar una señal a un proceso. Por ejemplo, si desea enviar la señal USR1 al proceso "a.out", haga lo siguiente.
$ ps -C a.out PID TTY TIME CMD 3699 pts/1 00:00:00 a.out $ kill -s USR1 3699
Nota :Consulte 4 formas de eliminar un proceso:kill, killall, pkill, xkill.
2. Enviar señal a un proceso desde otro proceso
Puede usar el sistema UNIX call kill (desde un programa C) para enviar señales de un proceso a otro. El siguiente fragmento de código C muestra cómo usar el comando matar.
La llamada al sistema Kill toma dos argumentos:1) el PID (ID del proceso) del proceso que debe señalarse 2) la señal que debe enviarse al proceso. El comando Kill devuelve 0 cuando tiene éxito.
int send_signal (int pid) { int ret; ret = kill(pid,SIGHUP); printf("ret : %d",ret); }
3. Enviar señal a un proceso desde el teclado
Cuando un proceso se está ejecutando en la terminal, puede enviar una señal a ese proceso desde el teclado usando alguna combinación específica de teclas. Los siguientes son un par de ejemplos.
- SIGINT (Ctrl + C):ya lo sabe. Presionar Ctrl + C mata el proceso de primer plano en ejecución. Esto envía el SIGINT al proceso para matarlo.
- Puede enviar una señal SIGQUIT a un proceso presionando Ctrl + \ o Ctrl + Y
Puede ver las asignaciones de teclas que envían una señal específica a un proceso mediante el comando "stty -a" como se muestra a continuación.
$ stty -a | grep intr intr = ^C; quit = ^\; erase = ^?; kill = ^U; eof = ^D; eol = M-^?; eol2 = M-^?;