questo il codice (molte cose stamapte servono per il debug)

il porgramma deve creare N figli e farli attendere alemno 10 secondi. se il padre viene interrotto (ctrl+c) deve uccidere anche i figli..

codice:
#include <stdio.h>
#include <unistd.h>
#include <signal.h>
#include <stdlib.h>

int n=0;
int f[100];

void stoppa(){ //funzione che uccide i figli
int k;
	printf("kill \n");
 for(k=0;k<n;k++){
  printf("Termino FORZATAMENTE figlio: %d (pid: %d)\n",k+1,f[k]);
 // kill(f[k],SIGTERM);
  }
}

int main()
{
 int rc,i,k;
 printf("Figli? \n");
 scanf ("%d",&n);
  printf("il processo %d crea %d figli\n",getpid(),n);
	for(i=0;i<n;i++){
		if((rc=fork())<0) { //crea tutti i figli, se c sono errori esci
		 printf("Errore creazione processi");	
		 exit(-1);
		 } 
		if (rc==0){// se è un figlio
			f[i]=getpid(); //prendi il pid e mettilo nel vettore
			printf("Inizio figlio: %d (pid: %d)\n",i+1,f[i]);
			
			printf("%d \n",f[i]);
			sleep(10); //aspetta
			printf("Termino figlio: %d (pid: %d)\n",i+1,f[i]); //quando termina esce
			exit(0);
		  } 
	} signal(SIGINT,stoppa);  sleep(10); // il programma attende 10 secondi e poi esce
 for(k=0;k<n;k++)  printf("figlio: %d (pid: %d)\n",k+1,f[k]); //debug
 	
}
stefano@ubuntu:~/SO$ ./a.out
Figli?
5
il processo 9483 crea 5 figli
Inizio figlio: 1 (pid: 9484)
9484
Inizio figlio: 2 (pid: 9485)
9485
Inizio figlio: 3 (pid: 9486)
9486
Inizio figlio: 4 (pid: 9487)
9487
Inizio figlio: 5 (pid: 9488)
9488
kill
Termino FORZATAMENTE figlio: 1 (pid: 0)
Termino FORZATAMENTE figlio: 2 (pid: 0)
Termino FORZATAMENTE figlio: 3 (pid: 0)
Termino FORZATAMENTE figlio: 4 (pid: 0)
Termino FORZATAMENTE figlio: 5 (pid: 0)
figlio: 1 (pid: 0)
figlio: 2 (pid: 0)
figlio: 3 (pid: 0)
figlio: 4 (pid: 0)
figlio: 5 (pid: 0)


il problema è che in esecuzione nn tiene i pid nell'vettore