Aquí un pedacito de código que sirve para Linux en C:


#include
#include

main() {
FILE *f;
pid_t hijo, padre;
int estado;
int i=0,j=0;

f = fopen("algo.txt","a");
if(f == NULL) printf("Error de apertura\n");
else {
hijo = fork();

padre = getppid();
if(hijo == -1) printf("Error al crear el proceso\n");
else if(hijo == 0) {
printf("Operaciones de hijo\n");
fprintf(f, "= HIJO = PID: %i = PPID: %i =\n",getpid(),padre);
while(j<=30) {
i++;
if((i%5==0) || (i%3==0)) {
j++;
fprintf(f, "i: %i - j: %i\n",i,j);
} else fprintf(f, "i: %i - j: %i\n",i,j);
}
exit(0);
} else {
wait(&estado);
printf("Operaciones del padre\n");
fprintf(f, "= PADRE = PID: %i = Hijo: %i =\n",getpid(),hijo);
}
}
fclose(f);
}

Genera un archivo de texto asín:

= HIJO = PID: 8530 = PPID: 8529 =
i: 1 - j: 0
i: 2 - j: 0
i: 3 - j: 1
i: 4 - j: 1
i: 5 - j: 2
i: 6 - j: 3
i: 7 - j: 3
i: 8 - j: 3
i: 9 - j: 4
i: 10 - j: 5
i: 11 - j: 5
i: 12 - j: 6
i: 13 - j: 6
i: 14 - j: 6
i: 15 - j: 7
i: 16 - j: 7
i: 17 - j: 7
i: 18 - j: 8
i: 19 - j: 8
i: 20 - j: 9
i: 21 - j: 10
i: 22 - j: 10
i: 23 - j: 10
i: 24 - j: 11
i: 25 - j: 12
i: 26 - j: 12
i: 27 - j: 13
i: 28 - j: 13
i: 29 - j: 13
i: 30 - j: 14
i: 31 - j: 14
i: 32 - j: 14
i: 33 - j: 15
i: 34 - j: 15
i: 35 - j: 16
i: 36 - j: 17
i: 37 - j: 17
i: 38 - j: 17
i: 39 - j: 18
i: 40 - j: 19
i: 41 - j: 19
i: 42 - j: 20
i: 43 - j: 20
i: 44 - j: 20
i: 45 - j: 21
i: 46 - j: 21
i: 47 - j: 21
i: 48 - j: 22
i: 49 - j: 22
i: 50 - j: 23
i: 51 - j: 24
i: 52 - j: 24
i: 53 - j: 24
i: 54 - j: 25
i: 55 - j: 26
i: 56 - j: 26
i: 57 - j: 27
i: 58 - j: 27
i: 59 - j: 27
i: 60 - j: 28
i: 61 - j: 28
i: 62 - j: 28
i: 63 - j: 29
i: 64 - j: 29
i: 65 - j: 30
i: 66 - j: 31
= PADRE = PID: 8529 = Hijo: 8530 =

Bonito, ¿eh? Lo que hace es escribir en un "log" lo que genera los procesos padre e hijo.