Se compilo un programma usando gcc e provo ad eseguirlo dalla shell bash, qual è l'esatta sequenza di passi seguita da bash per eseguirlo?
So fork()
, execve()
, loader
, dynamic linker
(e altre cose) sono coinvolti, ma è possibile che qualcuno faccia un esatta sequenza di passi e un po 'di riferimento adeguati lettura?
Modificare:
Dalle risposte, sembra che la domanda potrebbe implicare molte possibilità. Voglio limitarmi a un semplice caso:
(test.c stampa solo ciao mondo)
$ gcc test.c -o test
$ ./test
Quali saranno i passaggi nel caso precedente ( ./test
), in particolare relativi al programma di avvio bash in alcuni processi figlio, caricamento, collegamento ecc.?