Un processo padre, tanti processi figli

di il
3 risposte

Un processo padre, tanti processi figli

Salve a tutti.
Non riesco a capire come si fa a generare (3) processi figli da uno stesso processo padre, senza far terminare ogni figlio ogni volta.
Io ho usato un ciclo for:
pid_t f[3];

	for(int i=0; i<3; i++)
	{
		f[i] = fork();
		if(f[i] == 0)	{	printf("Figlio di PID %d. Mio padre è %d\n", getpid(), getppid());		exit(0);		}
		else			wait(&f[i]);			//aspetta che il figlio sia creato
	}
Ho capito perché devo mettere la exit(0): se non la mettessi, al primo ciclo mi si creerebbero 2 processi, al secondo 4 e al terzo 8 (e la stringa verrebbe stampata per ogni figlio, quindi 7 volte).
Ma se volessi avere un padre con 3 figli tutti in esecuzione? Per esempio per permettere a 2 processi fratelli di comunicare tra loro?
Grazie infinite!

3 Risposte

  • Re: Un processo padre, tanti processi figli

    Quando generi un figlio devi distinguere il padre dal figlio, così da terminare il processo che non ti serve.
  • Re: Un processo padre, tanti processi figli

    Questo però non è il mio scopo. Anzi, io vorrei avere un solo figlio per volta in esecuzione, ma gli altri non devono terminare, devono essere in "stand by". Cosa faccio, devo usare i semafori?
  • Re: Un processo padre, tanti processi figli

    Se vuoi creare tre figli e farli proseguire uno alla volta, dovrai avere una regola di schedulazione del processo figlio che è in esecuzione: questo ammetto che ce l'hai. Adesso gli altri aspettano su un semaforo e va benissimo.
Devi accedere o registrarti per scrivere nel forum
3 risposte