nikpez
Ominide
1 min. di lettura
Vota 5 / 5

Concetti Chiave

  • Il programma è un gioco di indovinare il numero, implementato in C, che coinvolge processi multipli.
  • Utilizza la funzione fork per creare processi figli che comunicano tramite pipe per scambiare dati.
  • Un processo genera un numero casuale ogni 5 secondi, e l'utente deve indovinarlo tramite input.
  • Il programma verifica l'input dell'utente e restituisce un segnale per indicare se il numero è corretto o meno.
  • La comunicazione tra processi è orchestrata attraverso letture e scritture su pipe per mantenere il flusso del gioco.
Gioco indovina il numero

#include
#include
#include
#include
#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 e risposte

Hai bisogno di aiuto?
Chiedi alla community