int main();
To prosta deklaracja. Nie może przyjmować żadnych argumentów wiersza poleceń.
int main(int argc, char* argv[]);
Ta deklaracja jest używana, gdy program musi przyjmować argumenty wiersza polecenia. Po uruchomieniu tak:
myprogram arg1 arg2 arg3
argc
lub Liczba argumentów zostanie ustawiona na 4 (cztery argumenty) i argv
lub Wektory argumentów zostaną wypełnione wskaźnikami łańcuchowymi do „myprogram”, „arg1”, „arg2” i „arg3”. Wywołanie programu ( myprogram
) jest zawarte w argumentach!
Alternatywnie możesz użyć:
int main(int argc, char** argv);
Jest to również ważne.
Istnieje jeszcze jeden parametr, który możesz dodać:
int main (int argc, char *argv[], char *envp[])
Ten envp
parametr zawiera również zmienne środowiskowe. Każdy wpis ma ten format:
VARIABLENAME=VariableValue
lubię to:
SHELL=/bin/bash
Lista zmiennych środowiskowych jest zakończona zerem.
WAŻNE: Nie należy stosować żadnych argv
lub envp
wartości bezpośrednio w wywołań system()
! Jest to ogromna dziura w zabezpieczeniach, ponieważ złośliwi użytkownicy mogą ustawiać zmienne środowiskowe na polecenia wiersza poleceń i (potencjalnie) powodować ogromne szkody. Ogólnie po prostu nie używaj system()
. Prawie zawsze istnieje lepsze rozwiązanie zaimplementowane w bibliotekach C.