Execv/fork su file aperto

From Sistemi Operativi
Revision as of 10:53, 2 December 2014 by Eddy (talk | contribs) (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,...")
(diff) ← Older revision | Latest revision (diff) | Newer revision → (diff)
Jump to navigation Jump to search

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)