int main();
Ceci est une simple déclaration. Il ne peut accepter aucun argument de ligne de commande.
int main(int argc, char* argv[]);
Cette déclaration est utilisée lorsque votre programme doit accepter des arguments de ligne de commande. Lorsqu'il est exécuté comme tel:
myprogram arg1 arg2 arg3
argc
, ou Argument Count, sera défini sur 4 (quatre arguments) et argv
, ou Argument Vectors, seront remplis avec des pointeurs de chaîne sur "myprogram", "arg1", "arg2" et "arg3". Le programme invocation ( myprogram
) est inclus dans les arguments!
Alternativement, vous pouvez utiliser:
int main(int argc, char** argv);
Ceci est également valable.
Il y a un autre paramètre que vous pouvez ajouter:
int main (int argc, char *argv[], char *envp[])
Le envp
paramètre contient également des variables d'environnement. Chaque entrée suit ce format:
VARIABLENAME=VariableValue
comme ça:
SHELL=/bin/bash
La liste des variables d'environnement se termine par null.
IMPORTANT: N'UTILISEZ PAS les valeurs argv
ou envp
directement dans les appels à system()
! Il s'agit d'un énorme trou de sécurité, car des utilisateurs malveillants pourraient définir des variables d'environnement sur des commandes de ligne de commande et (potentiellement) causer des dommages massifs. En général, ne l'utilisez pas system()
. Il existe presque toujours une meilleure solution implémentée via les bibliothèques C.