elhacker.net cabecera Bienvenido(a), Visitante. Por favor Ingresar o Registrarse
¿Perdiste tu email de activación?.

 

 


Tema destacado: Usando Git para manipular el directorio de trabajo, el índice y commits (segunda parte)


  Mostrar Temas
Páginas: [1]
1  Sistemas Operativos / GNU/Linux / Signals Linux en: 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!


Páginas: [1]
WAP2 - Aviso Legal - Powered by SMF 1.1.21 | SMF © 2006-2008, Simple Machines