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:
ma naturalmente non va...scusate forse la banalità!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"); }

Rispondi quotando