Portál AbcLinuxu, 13. května 2025 17:05

Dotaz: ziskani hodnoty systemove promenne v C

17.5.2007 16:23 pavel
ziskani hodnoty systemove promenne v C
Přečteno: 166×
Odpovědět | Admin
Ahoj,

potreboval bych ziskat hodnotu systemove promenne v jazyce C.

Jde to nejak.

Dik moc.
Nástroje: Začni sledovat (2) ?Zašle upozornění na váš email při vložení nového komentáře.

Odpovědi

17.5.2007 16:24 outsider
Rozbalit Rozbalit vše Re: ziskani hodnoty systemove promenne v C
Odpovědět | | Sbalit | Link | Blokovat | Admin
http://www.gnu.org/software/libc/manual/html_node/Environment-Variables.html#Environment-Variables
18.5.2007 00:02 Andrej | skóre: 51 | blog: Republic of Mordor
Rozbalit Rozbalit vše Re: ziskani hodnoty systemove promenne v C
Odpovědět | | Sbalit | Link | Blokovat | Admin

Primitivní způsob přístupu

Nuže, zkus třeba takovýto snipplet:

#include<stdio.h>

int main( int argc, char **argv, char **env ) {
	for ( ; *env; ++env ) puts( *env );
}

Nebo třeba takhle, což je (?) totéž... (Kdyžtak to tu někdo upřesní...)

#include<stdio.h>

extern char **environ;

int main( void ) {
	for ( ; *environ; ++environ ) puts( *environ );
}

To byly jen houpé příklady pro přehled. Pro lepší manipulaci je dobré udělat #include<stdlib.h> a využít jednu z následujících funkcí.

Sofistikovanější způsob přístupu

Tři užitečné poznámky

A ještě snipplet na závěr

Takhle bys to mohl třeba použít, stačí přidat jen ošetření případných chybových stavů.

#include<stdio.h>
#include<stdio.h>

static const char *const NOTSET = "VARIABLE NOT SET";
static const char *const USER = "USER";

static void output( char *const value ) {
	puts( value == NULL ? NOTSET : value );
}

int main( void ) {
	output( getenv( USER ) );       /* skutečný uživatel */

	putenv( "USER=vincenc" );
	output( getenv( USER ) );       /* 'vincenc' - přepsáno */

	setenv( USER, "hugo", 0 );
	output( getenv( USER ) );       /* 'vincenc' - nepřepsáno */

	setenv( USER, "hugo", 1 );
	output( getenv( USER ) );       /* 'hugo' - přepsáno */

	unsetenv( USER );
	output( getenv( USER ) );       /* 'VARIABLE NOT SET' - smazáno */
}

Uf, to je vše. Ale příště zkus radši napřed Google, protože tohle není příliš složitá otázka... ;-)

18.5.2007 00:05 Andrej | skóre: 51 | blog: Republic of Mordor
Rozbalit Rozbalit vše Re: ziskani hodnoty systemove promenne v C

K tomu poslednímu snippletu: mám tam omylem dvakrát stejný include. Jak jsem zjistil, stdlib.h v tomto případě není nutné includovat - stačí stdio.h.

Založit nové vláknoNahoru

Tiskni Sdílej: Linkuj Jaggni to Vybrali.sme.sk Google Del.icio.us Facebook

ISSN 1214-1267, (c) 1999-2007 Stickfish s.r.o.