[so] [Linux] Comportament ciudat variabile de mediu
ana-maria lepar
amylepar at gmail.com
Sat Mar 28 23:21:50 EET 2009
Salut,
Am rezolvat dilema :
Cod :
========================================
#include <stdlib.h>
#include <stdio.h>
#include <string.h>
int main(int argc, char ** argv){
char * rez ;
char * var = (char *) malloc (10);
if (! var) return -1;
strcpy(var,"$HOME");
printf(" var = %s \n", var);
rez = getenv(var);
printf(" rez pentru var %s =%s \n", rez, var);
rez = getenv(var+1);
printf(" rez pentru var+1 : %s = %s \n", rez, var+1);
free(var);
//cazul cu argv[1] = "$HOME"
printf("argv[1] = %s \n", argv[1]);
rez = getenv(argv[1]);
printf("pentru argv[1] = var mediu = %s \n", rez);
free(rez);
return 0;
}
===========================================
Rezultat :
==========================================
so at elmer:~/teme/tema1_linux/teste_moi$ ./a.out $HOME
var = $HOME
rez pentru var (null) =$HOME
rez pentru var+1 : /home/so = HOME
argv[1] = /home/so
pentru argv[1] = var mediu = (null)
so at elmer:~/teme/tema1_linux/teste_moi$
============================================
Concluzia mea (nu stiu daca este corecta in totalitate) :
- deja cand ii dau ca parametru $HOME, el face interpretarea si in argv[1]
nu imi va stoca $HOME ci chiar valorea variabilei si pe urma va face un
getenv("/home/so") si nu o va gasi si va intoarce 0
- legat de 1) : "*De ce faci argv[1] + 1? E suficient argv[1]*. " getenv
primeste ca parametru numele variabilei de mediu fara $ [am testat
exemplele cu var si var +1).
Multumesc
Ana
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://cursuri.cs.pub.ro/pipermail/so/attachments/20090328/80d73754/attachment.htm>
More information about the so
mailing list