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 corres así:
myprogram arg1 arg2 arg3
argc
, o Argument Count, se establecerá en 4 (cuatro argumentos), y argv
, o Vectores de argumentos, se completarán con punteros de cadena a «myprogram», «arg1», «arg2» y «arg3». La invocación del programa (myprogram
) está incluido en los argumentos!
Alternativamente, puede 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[])
los envp
El parámetro también contiene variables de entorno. Cada entrada sigue este formato:
VARIABLENAME=VariableValue
como esto:
SHELL=/bin/bash
La lista de variables de entorno tiene terminación nula.
IMPORTANTE: NO use ninguna argv
o envp
valores directamente en llamadas a system()
! Esto es un enorme agujero de seguridad, ya que los usuarios malintencionados podrían establecer variables de entorno en los comandos de la línea de comandos y (potencialmente) causar daños masivos. En general, simplemente no use system()
. Casi siempre hay una mejor solución implementada a través de bibliotecas C.