Précédent   Forum des professionnels en informatique > Systèmes > Autres systèmes > Unix > AIX
AIX Forum d'entraide sur le système AIX. Avant de poster -> FAQ AIX et cours AIX
Partagez cette discussion sur d'autres réseaux sociaux : Viadeo Twitter Google Facebook Digg Delicious MySpace Yahoo
Réponse Proposer ce sujet en actualité
 
Outils de la discussion
Publicité
Vieux 15/01/2010, 17h38   #1
Membre du Club
 
Inscription : février 2005
Messages : 168
Détails du profil
Informations forums :
Inscription : février 2005
Messages : 168
Points : 42
Points : 42
Par défaut Variables sous Unix AIX

Bonjour,

Dans un shell ksh et un unix AIX, comment va etre géré une même variable (mais pas avec la même valeur) de deux scripts (similaire au contenu mais différents au nom) executés au même moment par une application ?

En fait concretement, j'ai une application qui va scruter des fichiers. Quand ceux-ci vont être dans leur repertoire respectif,l'application va lancer un script shell ksh respectif pour chaque fichier répéré. La seule différence dans les scripts est la valeur de la variable fic.

Est ce que l'AIX peut se mélanger les pédales au niveau des variables qui auront le meme nom et qui seront peut être valorisées au même moment ?

Merci beaucoup.

Apprentioracle
ApprentiOracle est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 16/01/2010, 08h51   #2
Membre confirmé
 
Avatar de fransoo
 
frans
Inscription : novembre 2009
Messages : 189
Détails du profil
Informations personnelles :
Nom : frans

Informations forums :
Inscription : novembre 2009
Messages : 189
Points : 217
Points : 217
Les variables sont "privées" et chaque script lancé (même deux instances du même script) disposent de leur propre allocation en mémoire.
fransoo est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 16/01/2010, 08h55   #3
Expert Confirmé Sénior
 
Avatar de Sve@r
 
Homme Frédéric
Ingénieur développement logiciels
Inscription : février 2006
Messages : 2 936
Détails du profil
Informations personnelles :
Nom : Homme Frédéric
Âge : 43
Localisation : France, Oise (Picardie)

Informations professionnelles :
Activité : Ingénieur développement logiciels
Secteur : Aéronautique - Marine - Espace - Armement

Informations forums :
Inscription : février 2006
Messages : 2 936
Points : 4 604
Points : 4 604
Citation:
Envoyé par ApprentiOracle Voir le message
Bonjour,

Dans un shell ksh et un unix AIX, comment va etre géré une même variable (mais pas avec la même valeur) de deux scripts (similaire au contenu mais différents au nom) executés au même moment par une application ?
Sous Unix, chaque programme s'exécute dans un environnement individuel totalement fermé. Cet environnement comprend un espace pour que le code s'exécute, un espace pour stocker les variables générales et un espace pour stocker les variables passées comme paramètre à une fonction. C'est une des principales raisons qui font qu'il ne peut pas y avoir de virus sous Unix.

Donc un même script (qui est interprété par le programme /bin/ksh) peut être lancé 200 fois en parallèle, il n'y aura aucun mélange des variables. Au contraire, la grande difficulté des programmeurs est d'arriver à faire passer des valeurs d'un programme à un autre et il existe des mécanismes spécifiques pour ça (ipcs, pipe, socket, fichiers disque)

Le seul danger de mélange peut provenir des fichiers temporaires que crée éventuellement le script. Si le programmeur n'est pas vigilant quand au nom de ces fichiers temporaires, il peut y avoir collision (si un script va travailler dans /tmp/toto et qu'on le lance 2 fois en parallèle il y aura deux processus qui travailleront en même temps dans "/tmp/toto" et les datas de l'un se mélangeront avec les datas de l'autre).
Pour éviter ce problème, on essaye d'éviter autant que possible les fichiers temporaires, et si on doit y passer par là, on prend alors toujours soin de rajouter "$$" (n° de processus) aux noms des fichiers temporaires qu'on crée. Comme un n° de processus est unique et dure durant toute l'exécution du programme, plus de soucis.
__________________
Vous ne pouvez pas apporter la prospérité au pauvre en la retirant au riche.
Tout ce qu'un individu reçoit sans rien faire pour l'obtenir, un autre individu a dû travailler pour le produire sans en tirer profit.
Tout Pouvoir ne peut distribuer aux uns que ce qu'il a préalablement confisqué à d'autres car on n'accroît pas les biens en les divisant.
Quand la moitié d'un peuple croit qu'il ne sert à rien de faire des efforts car l'autre moitié les fera pour elle, et quand cette dernière moitié se dit qu'il ne sert à rien d'en faire car ils bénéficieront à d'autres, cela s'appelle le déclin et la fin d'une nation.
Dr. Adrian Rogers, 1931
Sve@r est actuellement connecté   Envoyer un message privé Réponse avec citation 00
Vieux 18/01/2010, 10h59   #4
Membre du Club
 
Inscription : février 2005
Messages : 168
Détails du profil
Informations forums :
Inscription : février 2005
Messages : 168
Points : 42
Points : 42
Merci à vous 2, Fransoo et Sve@r.

Vos réponses me rassurent totalement.
ApprentiOracle est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 18/01/2010, 11h11   #5
Membre confirmé
 
Avatar de fransoo
 
frans
Inscription : novembre 2009
Messages : 189
Détails du profil
Informations personnelles :
Nom : frans

Informations forums :
Inscription : novembre 2009
Messages : 189
Points : 217
Points : 217
Une petite idée sans utiliser de processus complexes :
Au lieu d'exécuter les scripts enfants les "sourcer" dans le script principal.
Attention : cela demande d'attribuer certains noms de variables spécifiques et uniques (en utilisant un timestamp, par exemple) pour chacun des scripts "sourcés". Je ne l'ai pas expérimenté mais je pense que ça doit être possible. À appronfondir.
fransoo est déconnecté   Envoyer un message privé Réponse avec citation 00
Réponse Proposer ce sujet en actualité Cette discussion est résolue.
Outils de la discussion



Fuseau horaire GMT +1. Il est actuellement 19h11.


 
 
 
 
Partenaires

Hébergement Web