Sezione 7: varie

environ u0.1

os16: environ(7)

NOME

environ - ambiente del processo elaborativo

SINTASSI
extern char **environ;
DESCRIZIONE

La variabile environ, dichiarata nel file unistd.h, punta a un array di stringhe, ognuna delle quali rappresenta una variabile di ambiente, con il valore a lei assegnato. Pertanto, il contenuto di queste stringhe ha una forma del tipo nome=valore. Per esempio HOME=/home/user.

In generale, l'accesso diretto ai contenuti di questo array non è conveniente, in quanto sono disponibili delle funzioni che facilitano la gestione di questi dati in forma di variabili di ambiente.

Dal momento che le funzioni di accesso alle informazioni sulle variabili di ambiente sono definite nel file stdlib.h, la gestione effettiva dell'array di stringhe a cui punta environ è inserita nei file contenuti nella directory lib/stdlib/ di os16. Per la precisione, nel file lib/stdlib/environment.c si dichiara l'array di caratteri _environment_table[][] e array di puntatori a caratteri _environment[]:

char  _environment_table[ARG_MAX/32][ARG_MAX/16];
char *_environment[ARG_MAX/32+1];

L'array _environment_table[][] viene inizializzato con lo stato delle variabili di ambiente ereditate con l'avvio del processo; inoltre, all'array _environment[] vengono assegnati i puntatori alle varie stringhe che si possono estrapolare da _environment_table[]. Questo lavoro iniziale avviene per opera della funzione _environment_setup(), la quale viene avviata a sua volta dal file crt0.s. Successivamente, nello stesso file crt0.s, viene copiato l'indirizzo dell'_environment[] nella variabile environ, di cui sopra.

FILE SORGENTI

lib/unistd.h [u0.17]

lib/stdlib.h [u0.10]

lib/unistd/environ.c [i189.17.8]

applic/crt0.s [i190.1.9]

lib/stdlib/environment.c [i189.10.9]

lib/stdlib/getenv.c [i189.10.11]

lib/stdlib/putenv.c [i189.10.14]

lib/stdlib/setenv.c [i189.10.17]

lib/stdlib/unsetenv.c [i189.10.20]

VEDERE ANCHE

getenv(3) [u0.51], putenv(3) [u0.82], setenv(3) [u0.94], unsetenv(3) [u0.94].

os16: undocumented(7)

Questa sezione ha il solo scopo di raccogliere i riferimenti ipertestuali dei listati che, per qualche ragione, sono privi di una documentazione specifica.

«a2» 2013.11.11 --- Copyright © Daniele Giacomini -- appunti2@gmail.com http://informaticalibera.net