Menú

Mostrar Mensajes

Esta sección te permite ver todos los mensajes escritos por este usuario. Ten en cuenta que sólo puedes ver los mensajes escritos en zonas a las que tienes acceso en este momento.

Mostrar Mensajes Menú

Mensajes - jordibr7

#1
GNU/Linux / Signals Linux
6 Diciembre 2013, 11:10 AM
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!