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.
#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;
}