Home » Sistemi operativi » Linux » La funzione Main

La funzione Main

Uno dei concetti che sta alla base di Linux è che un processo esegue sempre uno e un solo programma: si possono avere più processi che eseguono lo stesso programma, ma ciascun processo vedrà la sua copia del codice.
Quando un programma è lanciato il kernel, esegue un opportuno codice di avvio, usando il programma ld-linux.so, che si trova dentro il kernel.

Questo programma prima carica le librerie condivise che servono al programma, poi compie il collegamento dinamico del codice e alla fine lo esegue. Infatti, a meno di non aver specificato il flag -static durante la compilazione, tutti i programmi in Linux sono incompleti e hanno bisogno di essere collegati alle librerie condivise quando sono avviati. La procedura è controllata da alcune variabili di ambiente e dal contenuto del file denominato e disponibile nel path seguente: /etc/ld.so.conf.

Il sistema fa partire qualunque programma chiamando la funzione main; sta al programmatore chiamare così la funzione principale del programma da cui si suppone iniziare l’esecuzione; in ogni caso senza questa funzione lo stesso linker (il programma che compie i collegamenti) darebbe luogo a errori. Lo standard ISO specifica che la funzione main può non avere argomenti o prendere due argomenti che rappresentano gli argomenti passati da linea di comando, in sostanza, un prototipo che va sempre bene, è il seguente: int main (int argc, char *argv []).
In realtà nei sistemi Linux esiste un altro modo per definire la funzione main, che prevede la presenza di un terzo argomento, char *envp[], che fornisce l’ambiente del programma; questa forma però non è prevista dallo standard POSIX per cui se si vogliono scrivere programmi portabili è meglio evitarla.

Lascia un commento