Hola a todos,
Soy nuevo por aquí, aunque entre varias veces, nunca comenté pero hoy me atreví! Mira os cuento, tengo una duda con las señales que se pueden enviar a un proceso. Tengo un programa que crea un hijo y los dos procesos, capturan la señal SIGINT (Ctrl+c). Es más o menos así:
#include <signal.h>
#include <stdio.h>
void pHijo(int x){
printf("Soy el hijo\n");
}
void pFather(int x){
printf("Soy el padre\n");
}
int main(int argc, char* argv[]){
if(fork()==0){
signal(SIGQUIT, pHijo);
}else{
signal(SIGQUIT, pFather);
}
while(1)
pause();
}
Mi duda entra, si mando:
kill -SIGINT pid_proceso_padre
Sale por pantalla:
Soy el padre
Hasta aquí todo normal, pero cuando mando ctrl+c sale:
Soy el padre
Soy el hijo
Entiendo yo que el hijo recibe la señal, pero porqué? quien es el que se la manda, bash no puede ser porqué si cambio el intérprete en /etc/passwd logeo con el usuario que le cambie el intérprete aprieto ctrl+c y salen los dos mensajes. Quien es el encargado de enviar la señal a los procesos cuando hago ctrl+c? Es que no encuentro documentación... Gracias!
Soy nuevo por aquí, aunque entre varias veces, nunca comenté pero hoy me atreví! Mira os cuento, tengo una duda con las señales que se pueden enviar a un proceso. Tengo un programa que crea un hijo y los dos procesos, capturan la señal SIGINT (Ctrl+c). Es más o menos así:
#include <signal.h>
#include <stdio.h>
void pHijo(int x){
printf("Soy el hijo\n");
}
void pFather(int x){
printf("Soy el padre\n");
}
int main(int argc, char* argv[]){
if(fork()==0){
signal(SIGQUIT, pHijo);
}else{
signal(SIGQUIT, pFather);
}
while(1)
pause();
}
Mi duda entra, si mando:
kill -SIGINT pid_proceso_padre
Sale por pantalla:
Soy el padre
Hasta aquí todo normal, pero cuando mando ctrl+c sale:
Soy el padre
Soy el hijo
Entiendo yo que el hijo recibe la señal, pero porqué? quien es el que se la manda, bash no puede ser porqué si cambio el intérprete en /etc/passwd logeo con el usuario que le cambie el intérprete aprieto ctrl+c y salen los dos mensajes. Quien es el encargado de enviar la señal a los procesos cuando hago ctrl+c? Es que no encuentro documentación... Gracias!