17. Manipulando o ambiente
17.1 Exibindo as variáveis de ambiente
Além de argc e argv a função main possui o parâmetro env que lhe permite manipular as variáveis de ambiente. env é uma matriz de ponteiros para strings que armazena ponteiros para cada uma das variáveis de ambiente. Abaixo segue um código que exibe as variáveis de ambiente do sistema:
/* exibindo as variáveis de ambiente */
#include <stdio.h>
int main(int argc,char *argv[],char *env[])
{
int contador;
printf("Exibindo as variáveis de ambiente\n");
printf("=================================\n");
for(contador = 0;env[contador] != NULL;contador++)
printf("env[%d] => %s\n",contador,env[contador]);
return(0);
}
|
Você pode tratar env como um ponteiro em vez de tratá-lo como uma matriz de strings. Para isso você deve declará-lo como um ponteiro para um ponteiro de strings. Exemplo;
/* tratando "env" como ponteiro */
#include <stdio.h>
int main(int argc,char *argv[],char **env[])
{
int contador = 0;
printf("Exibindo as variáveis de ambiente\n");
printf("=================================\n");
while(*env)
printf("env[%d] => %s\n",contador++,*env++);
return(0);
}
|
17.2 Pesquisando uma variável no ambiente
Para pesquisar um item no ambiente use a função getenv() . Ela faz parte do arquivo de cabeçalho stdlib.h e sua sintaxe é:
Ela procura pela variável NOME na lista de variáveis de ambiente. Caso encontre ela retorna um ponteiro para a variável, caso contrário ela retorna NULL. Exemplo:
/* pesquisando uma variável de ambiente */
#include <stdio.h>
#include <stdlib.h>
int main()
{
char *variavel;
variavel = getenv("USER");
if(*variavel)
printf("USER = %s\n",variavel);
else
printf("A variável de ambiente USER não está definida.\n");
return(0);
}
|
17.3 Alterando o valor ou adicionando uma variável ao ambiente
Para alterar o valor ou adicionar uma variável ao ambiente use a função putenv() . Ela faz parte do arquivo de cabeçalho stdlib.h e sua sintaxe é:
putenv("VARIAVEL=novo_valor")
|
Caso VARIAVEL exista no ambiente seu valor é alterado para novo_valor , caso não exista esta é adicionada ao ambiente. A função retorna zero caso tudo ocorra bem, caso contrário ela retorna -1. Exemplo:
/* adicionando uma variável ao ambiente */
#include <stdio.h>
#include <stdlib.h>
int main(int argc,char *argv[],char *env[])
{
int contador;
char *variavel;
if(putenv("GURU=samu"))
printf("Erro ao adicionar a variável de ambiente GURU\n");
else
{
variavel = getenv("GURU");
if(*variavel)
printf("GURU = %s\n",variavel);
else
printf("A variável de ambiente GURU não está definida.\n");
}
return(0);
}
|