www.samueldiasneto.com: Linguagem C - manipulando o ambiente

<<< Voltar Avançar >>>

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 é:

getenv("NOME")

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);
  }

<<< Voltar Avançar >>>