Difference between revisions of "Execv/fork su file aperto"

From Sistemi Operativi
Jump to navigation Jump to search
(Created page with "Ho provato a far "girare" questo piccolo eseguibile, notato l'out ho provato a dare le mie conclusioni (non sono certo della correttezza) <source lang="C"> int main (int argc,...")
 
 
Line 19: Line 19:
 
===cmd===
 
===cmd===
 
<source lang="text">
 
<source lang="text">
$> ./es echo prova > tmp
+
$> ./es echo prova >> tmp
 
</source>
 
</source>
  

Latest revision as of 10:55, 2 December 2014

Ho provato a far "girare" questo piccolo eseguibile, notato l'out ho provato a dare le mie conclusioni (non sono certo della correttezza)

int main (int argc, char *argv[])
{
/* nessun controllo */
	if ( fork() ){
		int t;
		wait (&t);
		printf ("sono il padre\n");
	}
	else{
		printf ("sono il figlio\n");
		execv ("/bin/echo", ++argv);
	}
	return 0;
}

cmd

$> ./es echo prova >> tmp

out

prova
sono il padre

conclusioni

  • fork => padre e figlio condividono lo stesso offset (il figlio stampa prova e il padre stampa "sotto")
  • exec => non condivide stesso offset (sono il figlio viene sovrascritto)