int main();
Это простая декларация. Он не может принимать аргументы командной строки.
int main(int argc, char* argv[]);
Это объявление используется, когда ваша программа должна принимать аргументы командной строки. Когда бегаешь так:
myprogram arg1 arg2 arg3
argc
или Счетчик аргументов будет установлен на 4 (четыре аргумента), а argv
Векторы аргументов будут заполнены строковыми указателями на «myprogram», «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()
. Почти всегда есть лучшее решение, реализованное с помощью библиотек C.