Execv/fork su file aperto
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)