Ver Mensaje Individual
  #1 (permalink)  
Antiguo 18/03/2010, 14:56
elmenda
 
Fecha de Ingreso: diciembre-2005
Mensajes: 46
Antigüedad: 18 años, 5 meses
Puntos: 0
Procesos y Señales LINUX

Hola tengo un problema que no llego a entender a la hora de usar mascaras para modificar el comportamiento propio de las señales.

Tengo un programa lo que hace es crear una estrucutra en la que a partir del proceso padre crea un arbol de hijos, nietos, etc... de forma automatica hasta un maximo de procesos que se les pasa.

Eso yo ya lo tengo implementado mediante una funcion recursiva.

Dejo el codigo de demostracion. Previamente se define una estrucutra de arrays para almacenar los id de los procesos, de cada padre todos sus hijos... y la Funcion crearhijos es una funcion muy similar a esta.

Código:
switch(proceso)
             {      
         case -1: printf("·Error\n");
                       break;
              case 0:
            sprintf(mensaje,"(v)%d\n",getpid());
            write(1,mensaje,strlen(mensaje));
            emp[cont].id=getpid();
            emp[cont].nHijos=0;            
            if(rand()%2)            
               creaHijo(nProc,argv[2],argc);
            else
               /*MUERE*/;                                
            break;
         case -2:
            break;
              default:
         for(i=0;i<=cont;i++)
            {
               if(emp[i].id==getpid())
                  {
                  emp[i].hijos[emp[i].nHijos]=proceso;            
                  sprintf(mensaje,"Hijo: %d id : %d _ Padre : %d \n",emp[i].nHijos,emp[i].hijos[emp[i].nHijos],emp[i].id);
                  write(1,mensaje,strlen(mensaje));
                  emp[i].nHijos++;
                  }
            }

Mi duda es que ahora mediante señales y mascaras yo tengo que invocar a una funcion manejadora para que elimine los procesos.

Pero es que nose que pasos realmente tengo que dar para lograr todo esto, definirla si pero no se como tengo inicializar la mascara, como hacerle llegar la señal de eliminar, etc...

Si alguien pudiera darme una pista, o que funciones, codigo, etc.. necesito para este ejemplo se lo agradeciera