int main();
Це проста декларація. Він не може приймати жодних аргументів командного рядка.
int main(int argc, char* argv[]);
Ця декларація використовується, коли ваша програма повинна приймати аргументи командного рядка. Коли бігають так:
myprogram arg1 arg2 arg3
argc
, або Кількість аргументів буде встановлено на 4 (чотири аргументи), або argv
, або Вектори аргументів, будуть заповнені рядковими покажчиками на "мійпрограма", "arg1", "arg2" та "arg3". Виклик програми ( myprogram
) включено в аргументи!
Крім того, ви можете використовувати:
int main(int argc, char** argv);
Це також справедливо.
Ви можете додати ще один параметр:
int main (int argc, char *argv[], char *envp[])
envp
Параметр також містить змінні оточення. Кожен запис відповідає такому формату:
VARIABLENAME=VariableValue
подобається це:
SHELL=/bin/bash
Список змінних оточуючих середовищ недійсний.
ВАЖЛИВО: НЕ використовуйте жодних argv
або envp
значень безпосередньо для дзвінків до system()
! Це величезна дірка у захисті, оскільки зловмисні користувачі можуть встановлювати змінні середовища командам командного рядка та (потенційно) завдавати величезних збитків. Взагалі просто не користуйтеся system()
. Майже завжди є краще рішення, реалізоване через бібліотеки С.