Strumenti Utente

Strumenti Sito


informatica:sol:laboratorio18:esercitazionib:esercitazione7

Differenze

Queste sono le differenze tra la revisione selezionata e la versione attuale della pagina.

Link a questa pagina di confronto

Prossima revisione
Revisione precedente
informatica:sol:laboratorio18:esercitazionib:esercitazione7 [12/04/2018 alle 13:33 (7 anni fa)] – creata Massimo Torquatiinformatica:sol:laboratorio18:esercitazionib:esercitazione7 [30/04/2019 alle 04:58 (6 anni fa)] (versione attuale) Massimo Torquati
Linea 4: Linea 4:
  
 Realizzare una shell **rudimentale** che legge un comando con eventuali parametri dallo standard input e ne invoca l'esecuzione utilizzando una funzione della famiglia ''exec()''. La shell deve terminare se viene digitato il comando 'exit' Realizzare una shell **rudimentale** che legge un comando con eventuali parametri dallo standard input e ne invoca l'esecuzione utilizzando una funzione della famiglia ''exec()''. La shell deve terminare se viene digitato il comando 'exit'
-Il formato dei comandi accettati dalla shell e' molto semplice e non non prevede metacaratteri, ridirezione, pipe, etc...+Il formato dei comandi accettati dalla shell è molto semplice e non non prevede metacaratteri, redirezione, pipe, etc... 
 + 
 +===== Esercizio 1bis ===== 
 + 
 +Completare il codice seguente in modo che il programma calcoli i primi 13 numeri di Fibonacci utilizzando per ogni chiamata ''doFib'' un processo distinto. 
 + 
 +<code> 
 +#include <stdio.h> 
 +#include <stdlib.h> 
 +#include <unistd.h> 
 +#include <sys/wait.h> 
 + 
 +/*  
 + * Calcola ricorsivamente il numero di Fibonacci dell'argomento 'n'
 + * La soluzione deve forkare un nuovo processo che esegue una sola  
 + * chiamata di 'doFib'
 + * Se doPrint e' 1 allora la funzione lo stampa, altrimenti il 
 + * numero calcolato va passato al processo padre. 
 + */ 
 +static void doFib(int n, int doPrint); 
 + 
 +int main(int argc, char *argv[]) { 
 +    // questo programma puo' calcolare i numeri di Fibonacci solo fino a 13.   
 +    const int NMAX=13; 
 +    int arg; 
 +     
 +    if(argc != 2){ 
 + fprintf(stderr, "Usage: %s <num>\n", argv[0]); 
 + return EXIT_FAILURE; 
 +    } 
 +    arg = atoi(argv[1]); 
 +    if(arg < 0 || arg > NMAX){ 
 + fprintf(stderr, "num deve essere compreso tra 0 e 13\n"); 
 + return EXIT_FAILURE; 
 +    }    
 +    doFib(arg, 1); 
 +    return 0; 
 +
 +</code> 
  
 ===== Esercizio 2 ===== ===== Esercizio 2 =====
informatica/sol/laboratorio18/esercitazionib/esercitazione7.1523539995.txt.gz · Ultima modifica: 12/04/2018 alle 13:33 (7 anni fa) da Massimo Torquati

Donate Powered by PHP Valid HTML5 Valid CSS Driven by DokuWiki