int main();
Questa è una semplice dichiarazione. Non può accettare argomenti da riga di comando.
int main(int argc, char* argv[]);
Questa dichiarazione viene utilizzata quando il programma deve accettare argomenti della riga di comando. Quando eseguito in questo modo:
myprogram arg1 arg2 arg3
argc
o Argument Count, verrà impostato su 4 (quattro argomenti) e argv
, o Argument Vectors, verrà popolato con puntatori di stringa a "myprogram", "arg1", "arg2" e "arg3". Il programma invocation ( myprogram
) è incluso negli argomenti!
In alternativa, è possibile utilizzare:
int main(int argc, char** argv);
Anche questo è valido.
C'è un altro parametro che puoi aggiungere:
int main (int argc, char *argv[], char *envp[])
Il envp
parametro contiene anche variabili di ambiente. Ogni voce segue questo formato:
VARIABLENAME=VariableValue
come questo:
SHELL=/bin/bash
L'elenco delle variabili di ambiente ha una terminazione null.
IMPORTANTE: NON utilizzare alcuno argv
o envp
valore direttamente nelle chiamate a system()
! Questo è un enorme buco nella sicurezza poiché gli utenti malintenzionati potrebbero impostare variabili di ambiente su comandi da riga di comando e (potenzialmente) causare danni ingenti. In generale, semplicemente non usare system()
. C'è quasi sempre una soluzione migliore implementata attraverso le librerie C.