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à!