Hola,el sistema operativo es Linux y aqui tienen ustedes el código....un saludo y espero respueta..
Gracias.
//#include<iostream>
//#include<cstring>
#include<unistd.h>
#include<stdio.h>
#include<stdlib.h>
//using namespace std;
void Recursiva(int cont,int profundidad,int vpadres[],int n){
int pid;
int i;
int j;
int estado;
//int vpadres[100];
//int n=1;
i=1;
//cont++;
//printf("dentro de recursiva\n");
//printf("contador3 %d\n",cont);
if(cont<=profundidad){
if(cont==2){
printf("soy el padre (%d%d)y mi pid es %d\n",cont-1,i,getpid());
vpadres[0]=getppid();
}
for(i=1;i<=3;i++){
//cout<<"i "<<i<<endl;
vpadres[n]=getpid();
//printf("i %d %d\n",i,vpadres[i]);
pid = fork();
//vpadres[i]=getppid();
/*
if(pid>0){
//printf("AQUI SE METE??????\n");
printf("soy el padre y mi pid es %d\n",getpid());
}
*/
//printf("N %d\n",n);
if(pid==0){//el padre ha creado un hijo
//printf("soy el hijo %d%d mi pid es %d y el de mi padre es %d \n ",cont,i,getpid(),getppid());
printf("Mi pid es %d y el de mis padres son: ", getpid());
for (j =n; j > 0; j--){
printf("%d ", vpadres[j]);
}
printf("\n");
cont++;
//sleep(5);
//printf("contador %d\n",cont);
if(cont<=profundidad){
if(i==2){
//printf("soy el hijo %d mi pid es %d y el de mi padre es %d \n ",i,getpid(),getppid());
n++;
vpadres[n]=getpid();
pid=fork();
//cont++;
cont++;
if(pid==0){
//printf("soy el hijo %d1 mi pid es %d y el de mi padre es %d\n ",cont-1,getpid(),getppid());
//sleep(5);
printf("Mi pid es %d y el de mis padres son: ", getpid());
for (j =n; j > 0; j--){
printf("%d ", vpadres[j]);
}
printf("\n");
//printf("contador1 %d\n",cont);
n++;
if(cont<=profundidad){
//printf("paso aqui\n");
Recursiva(cont,profundidad,vpadres,n);
}
}
sleep(15);
exit(0);
}
//sleep(5);
exit(0);
}
sleep(20);
exit(0);
}
}
sleep(5);
//exit(0);
for(i=1;i<=3;i++){
//printf("estado %d\n",estado);
wait(&estado);
printf("soy el padre con pid %d y mi hijo %d ha terminado\n",getpid(),getppid());
}
}
//printf("vpadres %d\n",vpadres[0]);
//sleep(2);
//exit(0);
}
int main(int argc,char *argv[]){
int cont=0;
int pid;
//pid = fork();
int i=1;
int j;
int profundidad,estado;
//cout<<pid<<endl;
int pos=0;
int vpadres[100];
int indice;
indice=1;
//printf("el argumento es "<<argv[1]<<endl;
profundidad=atoi(argv[1]);
//profundidad=argv[1]+ 0;
//printf("la profundidad es %d ",profundidad);
cont++;
if(profundidad > 1){
cont++;
Recursiva(cont,profundidad,vpadres,indice);
}
return(0);
}
si no se entienden asi..tambien les adjunto el archivo,espero ayuda..gracias.