Esercizi con System Call

From Sistemi Operativi
Jump to navigation Jump to search

Questi programmi contengono esempi di uso delle System-Call.

Il consiglio e' di compilarli, provarli e capirne passo-passo il funzionamento. (o spiegare perche' non funzionino).

Ovviamente potete proporre ulteriori esempi. Renzo (talk) 08:03, 2 November 2015 (CET)

programma 0

Il gatto di Schrödinger: Fork e' vero o falso?

#include <stdio.h>
#include <unistd.h>

int main(int argc, char* argv[]) {
  if (fork())
    printf("fork is true\n");
  else
    printf("fork is false\n");
  usleep(100000);
  return 0;
}


il programma stampa entrambi i risultati perché la system call fork() crea un processo figlio identico al padre, questa system call ha come valore di ritorno al thread padre il pid del processo figlio (che essendo diverso da 0 è true) e al thread figlio ritorna 0, quindi il processo padre riceve un valore diverso da 0 (pid del figlio) e stampa true, mentre il processo figlio riceve 0, non entra nel if e stampa, ovviamente false.

(Simone)