C/Visual C - Crear un proceso y 3 hijos

   
Vista:
Imágen de perfil de Charly

Crear un proceso y 3 hijos

Publicado por Charly cdum77@hotmail.com (5 intervenciones) el 29/10/2017 17:08:16
Hola, estoy empezando a manejar los procesos en C con Linux y me han mandado crear un padre y 3 hijos.
Los he creado bien pero me sale las 3 veces con el mismo pid.
Este es el código que he escrito:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
#include <stdlib.h>
#include <unistd.h>
#include <stdio.h>
void main(){
  pid_t pid_padre,pid_hijos;
  pid_padre=fork();
  if(pid_padre==0){
    for(int i=3;i>=1;i--){
      printf("Soy el hijo %d, Mi padre es= %d, Mi PID= %d\n",i,getppid(),getpid());
    }
    printf("Proceso PADRE = %d\n",getppid());
  }else{
    pid_hijos=wait();
  }
  exit(0);
}
Y aquí está la salida:

Soy el hijo 3, Mi padre es= 4183, Mi PID= 4184
Soy el hijo 2, Mi padre es= 4183, Mi PID= 4184
Soy el hijo 1, Mi padre es= 4183, Mi PID= 4184
Proceso PADRE = 4183

El problema es que me debería salir el pid de cada hijo diferente.
Gracias por adelantado.
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

Crear un proceso y 3 hijos

Publicado por Tom (565 intervenciones) el 29/10/2017 17:56:04
Para ello deberías crear 3 procesos, no uno :D
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
1
Comentar
Imágen de perfil de Charly

Crear un proceso y 3 hijos

Publicado por Charly cdum77@hotmail.com (5 intervenciones) el 29/10/2017 18:57:17
Gracias por responder Tom.
¿Entonces tengo que crear 3 fork del padre y crear un hijo con cada fork?
Perdona pero estoy un poco pez en C.
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
Imágen de perfil de Charly

Crear un proceso y 3 hijos

Publicado por Charly cdum77@hotmail.com (5 intervenciones) el 29/10/2017 19:33:38
Ya lo he arreglado y queda así:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
#include <stdlib.h>
#include <unistd.h>
#include <stdio.h>
void main(){
  pid_t pid_hijo1,pid_hijo2,pid_hijo3;
  pid_hijo1=fork();
  if(pid_hijo1==0){
    printf("Soy el hijo 1, Mi padre es= %d, Mi PID= %d\n",getppid(),getpid());
    sleep(2);
    exit(0);
  }
  pid_hijo2=fork();
  if(pid_hijo2==0){
    printf("Soy el hijo 2, Mi padre es= %d, Mi PID= %d\n",getppid(),getpid());
    sleep(2);
    exit(0);
  }
  pid_hijo3=fork();
  if(pid_hijo3==0){
    printf("Soy el hijo 3, Mi padre es= %d, Mi PID= %d\n",getppid(),getpid());
    sleep(2);
    exit(0);
  }
  printf("Proceso PADRE = %d\n",getppid());
  exit(0);
}
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
Revisar política de publicidad