====== 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]]