[pipe] Trivia

Il programma trivia contenuto nell’archivio chiede una serie di domande “banali” all’utente della forma:

Di che colore e' il cavallo ..... di Napoleone?

dove ….. è un colore scelto casualmente. L’utente deve rispondere con il colore corretto, che viene confrontato carattere per carattere. Non è necessario usare un separatore alla fine del colore perché trivia leggerà un numero di caratteri uguale a quello del colore atteso (caratteri che non sono lettere minuscole vengono comunque ignorati dal programma).

Normalmente il programma legge e scrive su terminale. E’ possibile specificare due pipe come argomenti da riga di comando usando rispettivamente le opzioni -i (input) e -o (output). In tale caso trivia crea le due pipe e le utilizza per comunicare. Alla fine dell’esecuzione le pipe vengono eliminate. Ad esempio:

$ ./trivia -i /tmp/pipeIn -o /tmp/pipeOut

L’obiettivo della verifica è di realizzare un programma che, usando le pipe, legga la domanda (dalla pipe di output -o) e risponda con il colore corretto (sulla pipe di input -i) a tutte le domande poste. Quando tutte le risposte sono corrette il programma termina con la stampa:

[*] Congratulazioni! Hai superato il trivia quiz!

Il programma supporta altre opzioni:

  • -v attiva la modalità verbosa. 
  • -h mostra le opzioni supportate.

Segue un esempio di esecuzione dove l’interazione avviene tramite standard input e standard output.

$ ./trivia 
Di che colore è il cavallo grigio di Napoleone?grigio
Di che colore è il cavallo rosa di Napoleone?rosso
[ERRORE] letto s invece di a
$

Suggerimenti

  • Non è necessario bufferizzare il colore che leggete dalla pipe e costruire una stringa in quanto potete usare direttamente l’altra pipe come buffer.
  • Il programma trivia crea e distrugge le pipe. Quando dovete testare la vostra soluzione, invocate prima trivia poi il vostro programma.
  • Per rendere eseguibile il programma utilizzare chmod +x nome, es. chmod +x trivia-x86-64

Note (per tutte le verifiche)

  • Programmi che non compilano o non superano il test non verranno valutati (non consegnateli).
  • Solo i programmi funzionanti verranno valutati in base ai commenti. Commentate in maniera appropriata il vostro programma e inserite un commento iniziale in cui spiegate l’idea risolutiva e specificate in che modo dobbiamo invocare il programma trivia per testare la vostra soluzione. Soluzioni non commentate non saranno valutate. Vedere la soluzione sotto per un esempio di commenti appropriati ed esaurienti.
  • NON COPIATE E NON FATE COPIARE! (Nel caso di soluzioni copiate verrà annullata la verifica di chi copia e chi ha fatto copiare indistintamente)