OVH Cloud OVH Cloud

Durée de vie des variable d'environnement

1 réponse
Avatar
Gibier Jean-Charles
Dans un script perl j'utilise mes variables d'environnement classiquement
comme suit
export TOTO=titi;
puis dans le script scr.pl:
if (defined($ENV{'TOTO'} && $ENV{'TOTO'} eq 'titi') {
....
}

La question est lorsque je lance

export TOTO=titi;
nohup scr.pl &

Et qu'ensuite je clos ma session alors que le script continue en tâche de
fond, quelle valeur est sensée prendre la variable $ENV{'TOTO'} ?
Y a t'il une manière saine de procéder avec ou sans (je préfère)
modification de mon script ?

Merci.
JCG

1 réponse

Avatar
Pascal Bourguignon
"Gibier Jean-Charles" writes:

Dans un script perl j'utilise mes variables d'environnement classiquement
comme suit
export TOTO=titi;
puis dans le script scr.pl:
if (defined($ENV{'TOTO'} && $ENV{'TOTO'} eq 'titi') {
....
}

La question est lorsque je lance

export TOTO=titi;
nohup scr.pl &

Et qu'ensuite je clos ma session alors que le script continue en tâche de
fond, quelle valeur est sensée prendre la variable $ENV{'TOTO'} ?
Y a t'il une manière saine de procéder avec ou sans (je préfère)
modification de mon script ?


Les variables d'environnement sont copiées au moment du fork comme
tout le reste de la mémoire.

(C'est pour ça qu'on ne peut pas modifier les variables
d'environnement dans le processus parent, seulement dans le processus
courrant et les prochains fils).

--
__Pascal Bourguignon__ http://www.informatimago.com/
The world will now reboot; don't bother saving your artefacts.