Linux - Ayuda con las señales

 
Vista:

Ayuda con las señales

Publicado por Juan Carlos (2 intervenciones) el 14/01/2006 13:27:23
Vamos a ver tengo un proceso padre y un hijo q ejecuta otro programa, eso ya lo tengo exo, ahora del padre deboenvíar una señal SIGUSR1 al hijo y q éste la reciba y se mate a su mismo y envíe una señal al padre de la muerte y éste debe recibirla.

Alguna idea?? Gracias :D
Valora esta pregunta
Me gusta: Está pregunta es útil y esta claraNo me gusta: Está pregunta no esta clara o no es útil
0
Responder

RE:Ayuda con las señales

Publicado por n0str0m0 (1503 intervenciones) el 14/01/2006 16:54:42
Con la función kill, puedes mandar una señal a un proceso. El proceso lo especificas con el pid, cosas que obtienes del valor de retorno del fork() por ejemplo.

Si el proceso hijo, tiene que matarse a sí mismo y antes de hacerlo tiene que enviar un mensaje al padre, yo utilizaría la función signal.
Esta función te permite especificar qué función quieres que se ejecute cuando te llegue una señal. De este modo, especificas una función que cuando le llegue la señal del padre, notifique al padre que va a morir y acto seguido finalice el proceso.

man 2 kill
man signal.

Salu2
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

RE:Ayuda con las señales

Publicado por Juan Carlos (2 intervenciones) el 14/01/2006 17:24:01
Q seria algo así como en la parte de código del padre.

kill (pidhijo2, SIGUSR1);

Y luego en el código del hijo sería ésto otro:

signal (SIGUSR1, trataSenhal);

void trataSenhal (int numeroSenhal)
{
printf ("\n\nRecibida señal del padre\n");
exit(-1);//salida y muerte del mismo
}


---------------------------------------

Espero q sea algo así, bien sólo me falta como sabe el padre pq se ha muerte éste hijo??

Creo q se lo envía automáticamente, pero no si como capturar dicha señal

Gracias :D
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

RE:Ayuda con las señales

Publicado por n0str0m0 (1503 intervenciones) el 15/01/2006 11:04:12
SIGCHLD: la envía un hijo a su padre cuando muere

Salu2
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

RE:Ayuda con las señales

Publicado por Juan Carlos (1 intervención) el 15/01/2006 23:29:54
Gracias :D
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar
sin imagen de perfil

RE:Ayuda con las señales

Publicado por chuidiang (22 intervenciones) el 16/01/2006 20:45:08
Hola:

Otra opción es que el padre llame a wait(). Con esto se queda bloqueado y en espera que alguno de sus hijos termine. La función devuelve en el return el pid del hiijo que ha terminado y en el parametro que recibe el valor del exit() que ha hecho el hijo.

Se bueno.
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

RE:Ayuda con las señales

Publicado por Antonio (1 intervención) el 13/03/2006 09:29:59
Como se puede activar dos señales a la vez en el mismo código padre y que se activen los signal respectivos. Dá algun tipo de problema?. En mi caso hay conflictos entre la señal SIG_IGN y SIGFPE.
signal(SIGFPE,tratar);
signal(SIGINT,SIG_ING);
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar