int main();
Ceci est une simple déclaration. Il ne peut pas prendre d'arguments de ligne de commande.
int main(int argc, char* argv[]);
Cette déclaration est utilisée lorsque votre programme doit prendre des arguments de ligne de commande. Lors de l'exécution comme par exemple:
myprogram arg1 arg2 arg3
argc
ou Argument Count, sera réglé sur 4 (quatre arguments), et argv
ou vecteurs d'arguments, seront remplis avec des pointeurs de chaîne pour "myprogram", "arg1", "arg2" et "arg3". L'invocation du programme (myprogram
) est incluse dans les arguments!
Alternativement, vous pouvez utiliser:
int main(int argc, char** argv);
Ceci est également valable.
Il y a un autre paramètre, vous pouvez ajouter:
int main (int argc, char *argv[], char *envp[])
Le paramètre envp
contient également des variables d'environnement. Chaque entrée a le format suivant:
VARIABLENAME=VariableValue
comme ceci:
SHELL=/bin/bash
Les variables d'environnement liste est nul terminé.
Si votre programme ignore les arguments de la ligne de commande, alors ce que vous écrivez est correct. Si votre programme doit traiter les arguments de la ligne de commande, l'EDI le fait correctement. –
Un indice pour les pirates: essayez de déclarer 'int main (int argc, char * argv [], char * envp [])' et d'imprimer le dernier argument. ';)' – ulidtko
@ulidtko il n'est pas bon que vous appreniez aux débutants à introduire la vulnérabilité dans leurs programmes;) –