Cómo imprimir las variables de entorno en un programa C usando "environ".Imprime las variables de entorno usando environ
extern char ** Environ
Cómo imprimir las variables de entorno en un programa C usando "environ".Imprime las variables de entorno usando environ
extern char ** Environ
#include <unistd.h>
#include <stdio.h>
extern char **environ;
//...
int i = 0;
while(environ[i]) {
printf("%s\n", environ[i++]); // prints in form of "variable=value"
}
Qué quiere decir
int main(int argc, char **argv, char **envp)
{
while(*envp!=null) {
printf("%s\n", *envp);
envp++;
}
return 0;
}
No, 'extern char ** environ;' es un estándar POSIX. Esta firma para 'main' es completamente no estándar. –
Usted es completamente correcto. Sin embargo. Por eso pregunté. Se compila y se ejecuta correctamente en gcc en Solaris 9 y 10, bajo cc en HPUX 10i, 11.0 y 11i. También compiló y ejecutó versiones anteriores de DEC Unix y DGUX. El punto es que la gente obtiene ** environ y la antigua int main (int, char **, char *) confusa. No tengo mi K & R para verificar o lo reclamaré allí también. ¿Qué dice tu K & R? –
exactamente lo que necesitaba? Entonces, el entorno es en realidad una variedad de punteros de caracteres, ¿verdad? y cada puntero de carácter en la matriz apunta a una variable de entorno ¿verdad? –
Cada puntero apunta a una cadena (sí, matriz de caracteres) de la forma "variable = valor". La última entrada es un puntero nulo, que termina el ciclo de arriba. – sje397
Muchas gracias :) .. Tu comentario fue muy informativo. –