====== clearenv() ======
''clearenv()'' ist in der ''[[c:lib:stdlib:start|stdlib]]'' definiert, die in C über ''stdlib.h'', bzw in C++ über ''cstdlib'' eingebunden wird.
===== Funktion =====
''clearenv()'' löscht alle nicht zwangsläufig notwendigen Systemvariablen. Dies ist vorallem dann interessant, wenn verhindert werden soll, dass das [[Enviroment]] aufgrund von Sicherheitsaspekten nicht an andere Prozesse vererbt werden soll.
===== Signatur =====
#include
int clearenv( void );
**name**: Name der Enviroment-Variablen.\\
\\
**Return Value**: 0 im Erfolgsfall, sonst einen Wert, der nicht Null entspricht.
===== Fehlerquellen =====
Sollte dieses Makro nicht zur Verfügung stehen, kann man sich durch das Überschreiben der statischen [[environ]]-Varibale behelfen:
environ = NULL;
===== Beispiel =====
#include
#include
int main (void)
{
system( "set" );
printf( "----------------------------------------------------------\n" );
clearenv();
system( "set" );
return EXIT_SUCCESS;
}
Der Code gibt über den Bashbefehl ''[[bash:set]]'' zuerst das vollständige [[Enviroment]] aus, gefolgt von einer Trennzeile und löscht dann das [[Enviroment]]. Unterhalb der Trennzeile sind also sämtliche nicht wirklich notwendigen Variablen gelöscht.
In beiden Fällen wird das Enviroment an den Befehl ''[[bash:set]]'' vererbt - im zweiten Fall erhält der Befehl jedoch deutlich weniger Informationen über den Benutzer.
**Ausgabe** \\
xin@trinity:~/proggen.org/clib/stdlib$ ./a.out
COLORFGBG='15;0'
DBUS_SESSION_BUS_ADDRESS='unix:abstract=/tmp/dbus-oOXMsb8LyW,guid=4268a2b2508eaf7268fb37eb00000021'
DEBEMAIL='xin@thisdomain.org'
DEBFULLNAME='Sascha Atrops'
DESKTOP_SESSION='kde'
DISPLAY=':0'
DM_CONTROL='/var/run/xdmctl'
GS_LIB='/home/xin/.fonts'
GTK2_RC_FILES='/home/xin/.gtkrc-2.0'
GTK_MODULES='canberra-gtk-module'
GTK_RC_FILES='/etc/gtk/gtkrc:/home/xin/.gtkrc::/data/home/xin/.kde/share/config/gtkrc'
HOME='/home/xin'
IFS='
'
KDE_FULL_SESSION='true'
KDE_MULTIHEAD='false'
KDE_SESSION_UID='1000'
KDE_SESSION_VERSION='4'
KONSOLE_DBUS_SERVICE=':1.74'
KONSOLE_DBUS_SESSION='/Sessions/2'
LANG='de_DE.UTF-8'
LANGUAGE=''
LOGNAME='xin'
OLDPWD='/home/xin/proggen.org'
OPTIND='1'
PATH='/home/xin/workspace/gsys/bin/:/usr/local/bin:/usr/bin:/bin:/usr/bin/X11:/usr/games'
PPID='2550'
PROFILEHOME=''
PS1='$ '
PS2='> '
PS4='+ '
PWD='/home/xin/proggen.org/clib/stdlib'
QT_PLUGIN_PATH='/home/xin/.kde/lib/kde4/plugins/:/usr/lib/kde4/plugins/'
SESSION_MANAGER='local/trinity:@/tmp/.ICE-unix/2044,unix/trinity:/tmp/.ICE-unix/2044'
SHELL='/bin/bash'
SHLVL='1'
SSH_AGENT_PID='1972'
SSH_AUTH_SOCK='/tmp/ssh-kwFMcP1934/agent.1934'
TERM='xterm'
USER='xin'
WINDOWID='121634854'
WINDOWPATH='7'
XCURSOR_THEME='Oxygen_Black'
XDG_DATA_DIRS='/usr/share:/usr/share:/usr/local/share'
XDG_SESSION_COOKIE='60634ab7c17a622d3854b4ca00000313-1293392788.605835-1649696329'
XDM_MANAGED='method=classic'
_='./a.out'
----------------------------------------------------------
IFS='
'
OPTIND='1'
PATH='/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin'
PPID='2550'
PS1='$ '
PS2='> '
PS4='+ '
PWD='/data/home/xin/proggen.org/clib/stdlib'
xin@trinity:~/proggen.org/clib/stdlib$
===== siehe auch =====
[[c:lib:stdlib:]]: [[getenv()]], [[putenv()]], [[setenv()]], [[unsetenv()]], [[c:lib:stdlib:Enviroment]] \\
[[bash:]]: [[bash:set]]