Dev - C++ - procesos, fork

 
Vista:
Imágen de perfil de rocio
Val: 50
Ha mantenido su posición en Dev - C++ (en relación al último mes)
Gráfica de Dev - C++

procesos, fork

Publicado por rocio (18 intervenciones) el 25/09/2020 05:10:47
buenos dias, una consulta alguno me podria decir por que al ejecutar este programa se me imprime 14 veces el prinf ?
segun yo eran 8 veces q debia hacerlo, (segun yo dije, solo busco el por que )


1
2
3
4
5
6
7
8
9
10
11
12
#include <stdio.h>
#include <sys/types.h>
#include <unistd.h>
 
int main(){
    Int n=3;
    for (i=0; i<n; i++){
    fork();
    printf("Soy un proceso!\n");
    }
    return 0;
}
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
Imágen de perfil de rocio
Val: 50
Ha mantenido su posición en Dev - C++ (en relación al último mes)
Gráfica de Dev - C++

procesos, fork

Publicado por rocio (18 intervenciones) el 25/09/2020 09:03:23
esta bien escrito... si lo ejecuto me aparecen 14 impreciones por lo que yo me pregunto el por que

link del codigo en mi drive

https://drive.google.com/file/d/1wLbQ0RLJwwSw0ove__CcttfQmchP6mFA/view?usp=sharing
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 Alfil
Val: 4.344
Oro
Ha mantenido su posición en Dev - C++ (en relación al último mes)
Gráfica de Dev - C++

procesos, fork

Publicado por Alfil (1444 intervenciones) el 25/09/2020 09:20:45
El porque está explicado en el link
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 rocio
Val: 50
Ha mantenido su posición en Dev - C++ (en relación al último mes)
Gráfica de Dev - C++

procesos, fork

Publicado por rocio (18 intervenciones) el 25/09/2020 09:52:48
lo vi, pero me dejo mas dudas.... segun yo son 8 impresiones por pantallas q deberia hacer pero me realiza 14, no entiendo :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

procesos, fork

Publicado por Tom (65 intervenciones) el 25/09/2020 11:13:30
Tal y como te han comentado, tu código está mal. No puede compilar.
Aparte, tienes fork() en un bucle tan cutre que cada proceso "hijo" creará más hijos dependiendo del valor de i cuando se creó.

Prueba esto, y te surgirán preguntas más interesantes, posiblemente:

1
2
3
4
5
6
7
8
9
10
11
12
#include <stdio.h>
#include <sys/types.h>
#include <unistd.h>
 
int main(){
	for(int i = 0; i < 3; i++){
		fork();
		printf("My father is %ld and I'm %ld\n", getppid(), getpid());
	}
	return 0;
}
/* vim: set ts=3 sw=3: */
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 Alfil
Val: 4.344
Oro
Ha mantenido su posición en Dev - C++ (en relación al último mes)
Gráfica de Dev - C++

procesos, fork

Publicado por Alfil (1444 intervenciones) el 25/09/2020 11:14:49
En la primera iteración se imprimen dos hijos.
En la segunda iteración esos dos hijos imprimen 4 hijos, con lo que llevamos 6.
En la tercera iteración esos 4 hijos imprimen 8 hijos, con lo que 6 + 8 = 14.
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 rocio
Val: 50
Ha mantenido su posición en Dev - C++ (en relación al último mes)
Gráfica de Dev - C++

procesos, fork

Publicado por rocio (18 intervenciones) el 25/09/2020 15:33:36
si son 14 procesos hijos no me tendria q imprimir 15 veces el mensaje contando al padre ?
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 Alfil
Val: 4.344
Oro
Ha mantenido su posición en Dev - C++ (en relación al último mes)
Gráfica de Dev - C++

procesos, fork

Publicado por Alfil (1444 intervenciones) el 25/09/2020 15:58:01
Los padres no se imprimen, solo los hijos
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 Rodrigo
Val: 1.755
Plata
Ha mantenido su posición en Dev - C++ (en relación al último mes)
Gráfica de Dev - C++

procesos, fork

Publicado por Rodrigo (539 intervenciones) el 25/09/2020 16:50:34
Cuando usas fork() el padre continua la ejecucion y genera un proceso hijo, quedando 2. Cada vez que usas fork() se duplica por esa razon.
No tienes que sumar padre + 2 hijos (3), sino padre + hijo (2).
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