Per rispondere, è concesso l'uso del man




Quale delle seguenti affermazioni è vera?
Linux è multiutente, perché definisce più utenti, di cui però uno solo può essere loggato su una data macchina
Linux è multiutente, perché permette a più utenti contemporaneamente di essere loggati sulla stessa macchina
Linux è multiprocesso, perché permette a più utenti contemporaneamente di essere loggati sulla stessa macchina
Linux è multiprocesso, perché può essere usato su una macchina con più processori





Quale delle seguenti affermazioni sui comandi cat e od è falsa?
L'opzione -A di od permette di scegliere la base (decimale, ottale od esadecimale) di tutti i bytes da stampare
L'opzione -n di cat fa precedere ogni riga stampata con il numero della riga stessa (a partire da 1)
L'opzione -E di cat stampa anche il carattere $ alla fine di ogni riga
L'opzione -j B di od permette di cominciare la visualizzazione a partire dal (B + 1)-esimo byte





Quale delle seguenti affermazioni sugli errori delle syscall è vera?
Per stampare su stdout la spiegazione di un errore verificatosi in una syscall si può effettuare la seguente chiamata: printf("%s\n", strerror(errno));
Per stampare su stdout la spiegazione di un errore verificatosi in una syscall è sufficiente chiamare perror
Per stampare su stdout la spiegazione di un errore verificatosi in una syscall è necessario scrivere uno switch sulla variabile globale errno
Per stampare su stderr la spiegazione di un errore verificatosi in una syscall, il cui nome sia contenuto nella variabile syscall_name (di tipo char *), si può effettuare la seguente chiamata: perror("Si e' verificato il seguente errore nella chiamata a %s", syscall_name);





Si supponga di voler avere in esecuzione in background i comandi cmd1 e cmd2. Quale dei seguenti modi è corretto?






Quale delle seguenti affermazioni sulle syscall wait e waitpid è falsa?

Se una chiamata wait(&status); ha successo, il valore di status coincide con l'exit status del processo figlio appena terminato
Ogni chiamata wait(&status); è equivalente alla chiamata waitpid(-1, &status, 0)
Le chiamate alla wait sono sempre bloccanti
Le chiamate alla waitpid possono non essere bloccanti





Quale delle seguenti affermazioni sulle funzioni malloc, calloc, realloc e free è falsa?

I risultati di malloc, calloc e realloc possono essere passati alla funzione free per poter essere riallocati da future malloc, calloc e/o realloc
Le due chiamate malloc(N*sizeof(int)) e realloc(NULL, N*sizeof(int)) hanno sempre lo stesso effetto
Il primo argomento di realloc, quando non NULL, deve contenere il risultato di una precedente chiamata a malloc, calloc o realloc
Le due chiamate calloc(N, sizeof(int)) e realloc(NULL, N*sizeof(int)) hanno sempre lo stesso effetto





Quale delle seguenti affermazioni sui comandi less e more è falsa?

Sono specialmente utili quando si vuole visualizzare un output molto lungo (che non è possibile visualizzare in un'intera schermata di terminale)
Sono entrambi interattivi
Per terminarli occorre premere CTRL+C
Entrambi permettono di ricercare espressioni regolari





Si supponga di avere il seguente frammento di codice:

Quale dei seguenti frammenti di codice ha lo stesso effetto?






Si supponga di avere il seguente frammento di codice:

Quale dei seguenti frammenti di codice scrive gli stessi caratteri sullo stdout, senza errori?






Quale delle seguenti affermazioni sui processi Linux è vera?

Per vedere i jobs in foreground, è sufficiente usare il comando jobs
Ciascun job è composto al massimo da un processo
Nessuna delle altre opzioni è vera
Quando un processo in foreground termina, la bash stampa il job id del processo e la ragione della terminazione