Salve a tutti!

Stò cercando di risolvere un problema di sincronizzazione tra due processi. In versione semplificata potrei dire che quello che vorrei è che un processo padre creasse un figlio e che:

1) il figlio invia un segnale al padre che lo riceve e stampa sul terminale qualcosa (in realtà dovrebbe fare altro ma già se riesce a far questo è un passo in avanti!)
2) dopo aver stampato il suo messaggio il padre invia un segnale al figlio il quale lo riceve e stampa sul terminale qualcosa
3) vanno avanti così fino a quando il figlio non termina (banalmente ho messo una exit nel while ma è per semplificare le cose)

il codice che ho scritto è questo:
codice:
#include<stdlib.h>
#include<stdio.h>
#include<unistd.h>
#include<signal.h>

void padre(int);
void figlio(int);

int main(int argc, char *argv[])
{
	int pid;
        signal(SIGUSR1,padre);
	pid=fork();
	if(pid==0)
	{
		signal(SIGUSR2,figlio);
		kill(getppid(),SIGUSR1);
		pause();
		while(1)
		{
			kill(getppid(),SIGUSR1);
			pause();
			exit(0);
	        }
	}
	else
	{
		pause();
		while(kill(pid,0)!=-1)
		{
			kill(pid,SIGUSR2);
			
			pause();
		}
		exit(0);
         }
}

void padre(int signo)
{
		printf("Padre\n");
}
		
void figlio(int signo)
{
		printf("Figlio\n");
}
ma naturalmente non va...scusate forse la banalità!