int main();
Esta es una simple declaración. No puede tomar ningún argumento de línea de comando.
int main(int argc, char* argv[]);
Esta declaración se usa cuando su programa debe tomar argumentos de línea de comandos. Cuando se ejecuta así:
myprogram arg1 arg2 arg3
argc
, o Argument Count, se establecerá en 4 (cuatro argumentos), y argv
, o Argument Vectors, se completará con punteros de cadena a "myprogram", "arg1", "arg2" y "arg3". ¡La invocación del programa ( myprogram
) está incluida en los argumentos!
Alternativamente, podría usar:
int main(int argc, char** argv);
Esto también es válido.
Hay otro parámetro que puede agregar:
int main (int argc, char *argv[], char *envp[])
El envp
parámetro también contiene variables de entorno. Cada entrada sigue este formato:
VARIABLENAME=VariableValue
Me gusta esto:
SHELL=/bin/bash
La lista de variables de entorno está terminada en nulo.
IMPORTANTE: ¡NO use ninguno argv
o envp
valores directamente en las llamadas a system()
! Este es un gran agujero de seguridad, ya que los usuarios malintencionados pueden configurar variables de entorno para los comandos de la línea de comandos y (potencialmente) causar daños masivos. En general, simplemente no lo use system()
. Casi siempre hay una mejor solución implementada a través de las bibliotecas C.