Tema: Concurrencia
Ver Mensaje Individual
  #6 (permalink)  
Antiguo 18/04/2016, 11:57
eferion
 
Fecha de Ingreso: octubre-2014
Ubicación: Madrid
Mensajes: 1.212
Antigüedad: 9 años, 7 meses
Puntos: 204
Respuesta: Concurrencia

Si yo ejecuto esto:

Código C:
Ver original
  1. #define HIJOS 3
  2.  
  3. int main()
  4. {
  5.   int padre = getpid();
  6.   printf("%d <- principal\n", padre);
  7.  
  8.   for(int i=0; i<HIJOS; i++)
  9.   {
  10.     if(!fork())
  11.     {
  12.       break;
  13.     }
  14.   }
  15.   if(getppid() == padre) // Hijos.
  16.   {
  17.     printf("%d <- hijo\n",getpid());
  18.   }
  19. }

Obtengo esto:

Código BASH:
Ver original
  1. 29387 <- principal
  2. 29389 <- hijo
  3. 29387 <- principal
  4. 29387 <- principal
  5. 29390 <- hijo
  6. 29387 <- principal
  7. 29391 <- hijo

Es decir, en el if únicamente entran los procesos hijos.

Salvo que estés creando otros procesos antes de llegar aquí no se me ocurre cómo te puede estar fallando.
__________________
La ayuda se paga con esfuerzo o con dinero. Si no estás dispuesto a esforzarte y quieres que te hagan los deberes pide presupuesto, al menos así ahorrarás tiempo.