/*
 * Hace unos meses me tardé más de 1 hora en entender el árbol de procesos que esto crea.
nitrous@lsd~$cc proctree.c
nitrous@lsd~$./a.out&
[2] 7513
PID: 7518       PPID: 7517
PID: 7517       PPID: 7516
PID: 7530       PPID: 7529
PID: 7514       PPID: 7513
PID: 7541       PPID: 7513
PID: 7513       PPID: 7308
PID: 7515       PPID: 7514
PID: 7543       PPID: 7523
PID: 7523       PPID: 7514
PID: 7526       PPID: 7525
PID: 7525       PPID: 7514
PID: 7534       PPID: 7528
PID: 7528       PPID: 7513
PID: 7538       PPID: 7535
PID: 7535       PPID: 7513
PID: 7539       PPID: 7513
PID: 7527       PPID: 7514
PID: 7519       PPID: 7516
PID: 7516       PPID: 7515
PID: 7521       PPID: 7520
PID: 7520       PPID: 7515
PID: 7532       PPID: 7529
PID: 7529       PPID: 7528
PID: 7544       PPID: 7533
PID: 7533       PPID: 7528
PID: 7537       PPID: 7536
PID: 7536       PPID: 7535
PID: 7531       PPID: 7530
PID: 7522       PPID: 7515
PID: 7524       PPID: 7523
PID: 7540       PPID: 7539
PID: 7542       PPID: 7524
nitrous@lsd~$ pstree -Alp nitrous
...
bash(7308)-+-a.out(7513)-+-a.out(7514)-+-a.out(7515)-+-a.out(7516)-+-a.out(7517)---a.out(7518)
                         |             |             |             `-a.out(7519)
                         |             |             |-a.out(7520)---a.out(7521)
                         |             |             `-a.out(7522)
                         |             |-a.out(7523)-+-a.out(7524)---a.out(7542)
                         |             |             `-a.out(7543)
                         |             |-a.out(7525)---a.out(7526)
                         |             `-a.out(7527)
                         |-a.out(7528)-+-a.out(7529)-+-a.out(7530)---a.out(7531)
                         |             |             `-a.out(7532)
                         |             |-a.out(7533)---a.out(7544)
                         |             `-a.out(7534)
                         |-a.out(7535)-+-a.out(7536)---a.out(7537)
                         |             `-a.out(7538)
                         |-a.out(7539)---a.out(7540)
                         `-a.out(7541)
...
*/
#include<stdio.h>
#include<sys/types.h>
#include<unistd.h>
#include<errno.h>

int main()
{
	int	i, n = 6;

	for(i = 1; i < n; i++)
		if(fork() == -1){
			perror("fork()");
			break;
		}

	fprintf(stdout, "PID: %d\tPPID: %d\n",\
			getpid(),\
			getppid());

	sleep(30);	/* Tiempo para poder ver en otra terminal el arbol creado */

	return 0;
}
