Visualizzazione dei risultati da 1 a 4 su 4
  1. #1
    Utente di HTML.it
    Registrato dal
    Mar 2006
    Messaggi
    93

    [C] Sincronizzazione processi

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

  2. #2
    Purtroppo sono mesi che non tocco questi argomenti, ma ti posso dire quasi con certezza che sbagli delle cose concettuali. Quando si utilizzano i segnali allora devi utilizzare delle funzioni di sistema che ti permettano di gestirle. Una funzione per la gestione dei segnali mi pare si chiami sigaction.
    Ti do' un link di un tizio che ha creato una guida bellissima sull' utilizzo delle system call su unix.
    http://gapil.truelite.it/

  3. #3
    Utente di HTML.it
    Registrato dal
    Mar 2006
    Messaggi
    93
    Ti ringrazio per la risposta e per il link!

    Sembra essere veramente una bella guida!

    Anch'io ero arrivato a conclusioni del genere ma pensavo che poteva esserci qualche altro modo visto che si tratta di un esercizio per l'università e che quindi dovrei risolvere (secondo me almeno) in base a ciò che il prof ha spiegato

  4. #4
    Il ragazzo più bravo che conosco a programmare non ha appreso nulla dall' uni, ma da solo. l' università ti da delle basi concettuali, ti aiuta a ragionare, ma per il resto ti assicuro non ti da nulla di più, purtroppo. e te lo dice uno che fa informatica...!!!
    Ora segui quella guida che è fatta molto bene.

Permessi di invio

  • Non puoi inserire discussioni
  • Non puoi inserire repliche
  • Non puoi inserire allegati
  • Non puoi modificare i tuoi messaggi
  •  
Powered by vBulletin® Version 4.2.1
Copyright © 2024 vBulletin Solutions, Inc. All rights reserved.