C/Visual C - Duda Creación Procesos en C

   
Vista:

Duda Creación Procesos en C

Publicado por Javier (5 intervenciones) el 06/08/2008 11:29:49
Hola a todos, estoy empezando con c sobre linux, en la creación de procesos mediante la función fork(). Pero tengo una duda con un código que me parece de lo más simple, a ver si alguien me la puede resolver. El código es el siguiente:

#include <sys/types.h>
#include <stdio.h>

main(){
pid_t pid;

pid = fork();
printf("%d ",pid); /* ----> Imprime el 0 */
switch(pid){
case -1:
perror("fork");
break;
case 0:
printf("Proceso %d; padre = %d ", getpid(),getppid()); /* ----> imprime los identificadores*/
break;
}
}

Y la duda es que me gustaría saber por que imprime al final "7475". Se que es el identificador del proceso, pero es que no hay ninguna parte del código en la que le digo que lo imprimar en pantalla... o me equivoco??
Esto es lo que me saca por pantalla:

0
Proceso 7475; padre = 7474
7475

Gracias por la ayuda y un saludo.
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:Duda Creación Procesos en C

Publicado por Tom (481 intervenciones) el 06/08/2008 14:53:54
Justo después de fork, ya existen dos procesos
por lo tanto, dos printf(),
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:Duda Creación Procesos en C

Publicado por Javier (5 intervenciones) el 06/08/2008 18:35:03
Ahh, vale vale, ya entiendo. Se sigue ejecutando el proceso que hace la llamada al fork (el padre) y el proceso nuevo (hijo) empieza desde donde se hizo el fork, por lo que comparten lineas de código, con lo que ejecutan lo mismo...

Gracias por la ayuda. Un saludo!
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:Duda Creación Procesos en C

Publicado por SuperIndio (11 intervenciones) el 07/08/2008 17:50:22
Si tengo

if (bind(ServerSocket, (struct sockaddr*)&ServerInetAddress, sizeof(ServerInetAddress)) == FAILURE)
{
printf("Error de enlace al socket ");
nRetVal = system( "jyam80 MAIL" );
/*-- exit(FAILURE); */
exit(FAILURE);
}
/*-----------------------------*
* Show we are willing to listen *
*-----------------------------*/
if (listen(ServerSocket, 1) == FAILURE)
{
printf("Error de escucha sobre el socket ");
nRetVal = system( "jyam80 MAIL" );
exit(FAILURE);
}
printf("Escuchando... ");

/* printf("Entrando en ciclo LISTEN-ACCEPT-RECEIVE "); */
/* While Alive */
while ( bAlive )
{

printf("esperando datos... ");
if ((ClientSocket = accept(ServerSocket, (struct sockaddr*)&ServerInetAddress, &InetAddressLen)) == FAILURE)
{
******************************************************
y si el accet lo quiero hacer dentro de un proceso hijo como tengo que hacerlo ?
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