🚀 go-pugleaf

RetroBBS NetNews Server

Inspired by RockSolid Light RIP Retro Guy

Article View: es.comp.os.linux.programacion
Article #7859

Re: fork/padres/hijos

#7859
From: Helio.es
Date: Wed, 15 Jan 2003 13:30
87 lines
3455 bytes
�no es al rev�s?

digo:
if(fpid == 0) /* fpid igual a cero en el proceso _hijo_ */
{
  printf("En el proceso _hijo_\n");
}
else /* la variable fpid es mayor que cero en el proceso _padre_ */
{
  printf("En el proceso _padre_, el pid del hijo, para controlarlo es %d\n",
fpid);
  printf("Esperamos a que el _hijo_ acabe:\n");
  if (fpid != waitpid(fpid, NULL, 0))
  {
    printf("Error\n");
  }
  printf("Ha acabao bien el hijo\n");
}

"Iago Rubio" <iagorubio@yahoo.com> escribi� en el mensaje
news:aut390$a1ssu$1@ID-175868.news.dfncis.de...
> Estaba Stanley por es.comp.os.linux.programacion y escribio:
>
> > Soy novato en el tema, pero este asunto me tiene muy intrigado:
> >
> >      Tengo entendido que al lanzar un proceso con fork, primero genera
el
> > padre (valor 0) y luego va generando hijos (valor 1). Pero no entiendo
> > bien como funciona, porque luego he leido que el pid del padre pasa al
> > hijo y al reves.
> >      No se, tengo una empanada mental increible, si alg�n alma
caritativa
> >      me
> > lo puede explicar, de una forma muy muy sencilla, se lo agradecer�a.
>
> Es m�s facil de lo que crees, y la pid NO pasa del padre al hijo. Fork en
el
> padre devuelve el pid del hijo y en el hijo 0.
>
> Estos valores se usan para que el saber si la copia del programa (porque
> fork lo que hace es un copia exacta del programa) que se est� ejecutando
es
> el proceso padre o el hijo.
>
> #include <unistd.h>
> #include <stdio.h>
> #include <stdlib.h>
>
> int main()
> {
>   pid_t fpid;
>
>   printf(" Arrancando .. ");
>
>   fpid = fork();
>
>   if(fpid < 0) /* la pid es menor que cero [-1] error haciendo fork() */
>   {
>     printf("fallo fork\n");
>     exit(EXIT_FAILURE);
>   }
>
>   if(fpid == 0) /* fpid igual a cero en el proceso padre */
>   {
>     printf("En el proceso padre\n");
>   }
>   else /* la variable fpid es mayor que cero en el proceso hijo*/
>   {
>     printf("En el proceso hijo, con pid %d\n", fpid);
>   }
>   exit(EXIT_SUCCESS);
> }
>
> Espero que el ejemplo te ayude a entender el uso del valor devuelto por
> fork, como ves el pid no se pasa de padre a hijo. fork() solo devuelve un
> pid si est� en el hijo.
>
>
> >
> > Gracias,
> > Un saludo.
>
> Un saludo
> --
> Iago Rubio                     < iagorubio(EN)telefonica.net >
> Linux User # 280230       RH 8.0 Kernel 2.4.18smp
>
Technical Details
Message-ID: <b03npd$l9084$1@ID-165255.news.dfncis.de>
Path: arc1-ca.pugleaf.net!archiver1.google.com!news1.google.com!newsfeed.stanford.edu!news-spur1.maxwell.syr.edu!news.maxwell.syr.edu!newsfeed.icl.net!newsfeed.fjserv.net!feed.news.nacamar.de!fu-berlin.de!uni-berlin.de!238.red-80-35-8.pooles.rima-tde.NET!not-for-mail
References: <aua5q8$dgh$1@news.ya.com> <aut390$a1ssu$1@ID-175868.news.dfncis.de>

Show Full Headers
Complete Article Headers
X-Google-Language: SPANISH,ASCII
X-Google-Thread: f86c8,c64d2f904bb75c6c
X-Google-Attributes: gidf86c8,public
X-Google-ArrivalTime: 2003-01-15 05:33:41 PST
Path: arc1-ca.pugleaf.net!archiver1.google.com!news1.google.com!newsfeed.stanford.edu!news-spur1.maxwell.syr.edu!news.maxwell.syr.edu!newsfeed.icl.net!newsfeed.fjserv.net!feed.news.nacamar.de!fu-berlin.de!uni-berlin.de!238.red-80-35-8.pooles.rima-tde.NET!not-for-mail
From: "Helio.es" <nospam_heltena@hotmail.com>
Newsgroups: es.comp.os.linux.programacion
Subject: Re: fork/padres/hijos
Date: Wed, 15 Jan 2003 14:30:22 +0100
Lines: 89
Message-ID: <b03npd$l9084$1@ID-165255.news.dfncis.de>
References: <aua5q8$dgh$1@news.ya.com> <aut390$a1ssu$1@ID-175868.news.dfncis.de>
NNTP-Posting-Host: 238.red-80-35-8.pooles.rima-tde.net (80.35.8.238)
X-Trace: fu-berlin.de 1042637421 22315268 80.35.8.238 (16 [165255])
X-Priority: 3
X-MSMail-Priority: Normal
X-Newsreader: Microsoft Outlook Express 6.00.2720.3000
X-MimeOLE: Produced By Microsoft MimeOLE V6.00.2600.0000