Article View: es.comp.os.linux.programacion
Article #7859Re: fork/padres/hijos
From: Helio.es
Date: Wed, 15 Jan 2003 13:30
Date: Wed, 15 Jan 2003 13:30
87 lines
3455 bytes
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-mailReferences:
<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