int main();
Dies ist eine einfache Erklärung. Sie kann keine Befehlszeilenargumente annehmen.
int main(int argc, char* argv[]);
Diese Deklaration wird verwendet, wenn Ihr Programm Befehlszeilenargumente annehmen muss. Wenn es als solches ausgeführt wird:
myprogram arg1 arg2 arg3
argc
oder Argument Count wird auf 4 (vier Argumente) gesetzt, und argv
oder Argumentvektoren, werden mit String-Zeigern auf "myprogram", "arg1", "arg2" und "arg3" gefüllt. Der Programmaufruf ( myprogram
) ist in den Argumenten enthalten!
Alternativ können Sie auch verwenden:
int main(int argc, char** argv);
Dies gilt auch.
Es gibt einen weiteren Parameter, den Sie hinzufügen können:
int main (int argc, char *argv[], char *envp[])
El envp
Parameter enthält auch Umgebungsvariablen. Jeder Eintrag folgt diesem Format:
VARIABLENAME=VariableValue
wie diese:
SHELL=/bin/bash
Die Liste der Umgebungsvariablen ist mit Nullen abgeschlossen.
WICHTIG! Verwenden Sie KEINE argv
o envp
Werte direkt in Aufrufen von system()
! Dies ist ein riesig Sicherheitslücke, da böswillige Benutzer Umgebungsvariablen auf Befehlszeilenbefehle setzen und (potenziell) großen Schaden anrichten können. Verwenden Sie generell keine system()
. Es gibt fast immer eine bessere Lösung, die durch C-Bibliotheken implementiert wird.