como guardar los pids de mis procesos padres,pongo ejemplo

Hola,la cuestion es que tengo que guardar los pids de los procesos padres y no se como hacerlo..para que salga de la siguiente forma:

Soy el proceso padre y mi pid es 8541
Soy el proceso 21: mi pid es 8542. Mis padres son: 8541
Soy el proceso 22: mi pid es 8543. Mis padres son: 8541
Soy el proceso 23: mi pid es 8548. Mis padres son: 8541
Soy el proceso 31: mi pid es 8544. Mis padres son: 8543, 8541
Soy el proceso 41: mi pid es 8545. Mis padres son: 8544, 8543, 8541
Soy el proceso 42: mi pid es 8546. Mis padres son: 8544, 8543, 8541
Soy el proceso 43: mi pid es 8547. Mis padres son: 8544, 8543, 8541

para que lo entendais,intento poner el grafico
y el grafico de procesos es el siguiente

8541
|
8542 8543 8548
|
|
8544
|
8545 8546 8547

eso es cuando le metemos como parametro profundidad =4;

Pero mi problema es como guardo el proceso de mis padres...

Me podeis ayudar???
Con getppid puedes obtener el pid del padre de un proceso, cada vez que hagas un fork lo guardas en una variable (un array de int, por ejemplo), las variables del padre se copian al proceso hijo por lo que seguirá pudiendo acceder a la lista.
Hola,gracias por contestar,no se si es esto lo que dices.....

vpadres[100];//me declaro un array de 100 como mucho....

vpadres[0]=getppid();

for(int i=1;i<=3;i++)//creo tres hijos
if (pid==0){
vpadres[i]=getpid();

}

}

ese es más o menos el esquema que he seguido...pero no almacena como quiero....según el esquema que he puesto anteriormre,,,es decir mis tres hijos tienen que almacenar el pid del padre y despues el que creo tiene que almacenar el pid de su padre y del otro padre..

Me entiendes?
Sí, te entiendo, pero tú a mí no ^^ Lo que estás haciendo es almacenar los pids

Proceso 1, creo vector padres[100], creo entero n y lo inicializo a 0, hago fork
...
en cada hijo: proceso X, almaceno pid del padre en padres[n], imprimo la lista de padres desde padres[0] hasta padres[n], aumento en 1 n, hago fork(s) si es necesario
...

Aparte de eso pues tendrías que controlar cuándo hacer fork y cuándo no, pero eso creo que ya lo tenías hecho y/o ya es cosa tuya :P

Edito: En el ejemplo que te he puesto almacena el pid del padre desde el hijo tras hacer el fork, también podrías hacerlo desde el mismo padre antes de hacer el fork. Es decir, que hay muchas formas de hacer esto.
Hola otra vez,muchas gracias,,pero no acabo de entenderlo como guardas los pids,sería mucho pedir que usted me lo explicara con un ejemplo?

Espero respuesta.
Perdón por las molestias.
Gracias.
4 respuestas