Concetti Chiave

  • Il programma utilizza la funzione fork() per creare processi multipli che interagiscono tra loro.
  • Un processo genera numeri casuali e attende che l'altro processo tenti di indovinarli.
  • I processi comunicano tra loro utilizzando pipe per scambiare dati come numeri generati e feedback.
  • Il secondo processo riceve un numero da indovinare e invia il suo tentativo attraverso una pipe.
  • Il programma termina quando il numero indovinato dal secondo processo corrisponde a quello generato.

inizializzazione e creazione dei processi

#include

#include

#include

#include time.h>

#include

#include

#define NUMF 1

int main()

{

int processID,processID2,num=0,indovina;

int p[2];

int p2[2];

//int tempo;

char verifica;

pipe(p);

pipe(p2);

processID2=fork();

if(processID2==0)

{

while(1)

{

usleep(5000000);

indovina=-1;

write(p[1],&indovina,sizeof(indovina));

}

}

else

{

srand(time(NULL));

processID=fork();

if(processID==0 ) //secondo processo

{

while(1)

{

read(p[0],&indovina,sizeof(indovina));

if(indovina==-1)

{

printf("\nNuovo numero generato: ");

num=(rand()%10+1);

printf("%d\n",num);

}

else if(indovina==num)

{

verifica='=';

write(p2[1],&verifica,sizeof(verifica));

return 0;

}

else if(indovina

{

verifica='

write(p2[1],&verifica,sizeof(verifica));

}

else

{

verifica='>';

write(p2[1],&verifica,sizeof(verifica));

}

}

}

else //primo processo

{

usleep(5001000);

verifica='>';

while(verifica!='=')

{

printf("\n");

printf("Inserisci il numero: ");

scanf("%d",&indovina);

write(p[1],&indovina,sizeof(indovina));

read(p2[0],&verifica,sizeof(verifica));

printf("%c",verifica);

}

}

}

return 0;

}

Domande da interrogazione

  1. Qual è lo scopo principale del programma presentato nel codice?
  2. Il programma è progettato per creare un gioco di indovinelli tra processi, dove un processo genera un numero casuale e l'altro tenta di indovinarlo, comunicando tramite pipe.

  3. Come avviene la comunicazione tra i processi nel programma?
  4. La comunicazione tra i processi avviene tramite l'uso di pipe, che permettono lo scambio di dati tra i processi figlio e padre per gestire il flusso del gioco.

  5. Qual è il ruolo del processo che genera numeri casuali nel programma?
  6. Il processo che genera numeri casuali attende un segnale per generare un nuovo numero e confronta i tentativi di indovinare del secondo processo, inviando un feedback tramite pipe.

Domande e risposte

Hai bisogno di aiuto?
Chiedi alla community