IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Linux Discussion :

C/UNIX Variables d'environements


Sujet :

Linux

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre confirmé
    Profil pro
    Inscrit en
    Janvier 2009
    Messages
    59
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2009
    Messages : 59
    Par défaut C/UNIX Variables d'environements
    Bonjour,
    je cherche à savoir comment unix gere les variables d'environements de ses shell, j'ai beaucoup de mal a trouver la reponse sur internet et devant recoder un shell (tres simple) uniquement en C, je souhaiterai en connaitre le fonctionnement.
    merci

  2. #2
    Membre éprouvé

    Profil pro
    Inscrit en
    Juin 2006
    Messages
    1 116
    Détails du profil
    Informations personnelles :
    Âge : 40
    Localisation : France

    Informations forums :
    Inscription : Juin 2006
    Messages : 1 116

  3. #3
    Membre confirmé
    Profil pro
    Inscrit en
    Janvier 2009
    Messages
    59
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2009
    Messages : 59
    Par défaut
    A, ce n'est pas se que je recherche, j'ai du mal m'exprimer desoler.
    J'explique plus clairement mon probleme :
    je dois recoder un shell, tres tres simple, en C; Afficher un prompt, et interpreter des commandes. Pour ce faire je n'est "droit" qu'a la fonction execve(), elle demande de lui envoyer les variables d'environement que je recupere via Le truc c'est que, envoyer les variables du shell sur le quell je code mon shell est stupide parsqu'il me faut mes propre variable, donc je me sert de cela uniquement pour recuperer l'environement basic (ex: la variable TERM_CAP etc...) parsque se seront les meme pour mon shell mais si je souhaite en cree ou en effacer je dois avoir ma propre gestion des variables.
    Alors, je cherche a savoir comment unix gere cela, le char **environ est il juste la pour faire une espece de sommaire des variables existentes pour l'affichage? et que les variables sont contenue dans une liste chaine ou plus compliquer encore? En gros comment unix gere t il ses variables d'environement, comment sont elles stocker, utiliser, sous quelle forme...(une reponse, aussi complexe soit-elle ne me derange pas, bien au contraire mais n'oublier pas que mon shell reste tres basic).
    merci j'espere avoir etais claire.

  4. #4
    Membre éprouvé

    Profil pro
    Inscrit en
    Juin 2006
    Messages
    1 116
    Détails du profil
    Informations personnelles :
    Âge : 40
    Localisation : France

    Informations forums :
    Inscription : Juin 2006
    Messages : 1 116
    Par défaut
    qu'est ce que tu penses de ce bout de code ?
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
     
    #include <stdlib.h>
     
    int main(void)
    {
        extern char** environ ;
        unsigned int i = 0 ;
        while( environ[i] != NULL )
        {
            puts( environ[i] ) ;
            i = i + 1 ;
        }
        return 0 ;
    }

  5. #5
    Membre confirmé
    Profil pro
    Inscrit en
    Janvier 2009
    Messages
    59
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2009
    Messages : 59
    Par défaut
    Bon, apparement je me fais pas comprendre.
    Je ne cherche pas a afficher le **environ (le jour ou un mec pretend recoder un shell aussi simple soit il et qu'il bute sur comment afficher le contenu d'un pointeur sur pointeur, je serais choquer) je veux compprendre comment unix gere ses variables, bon apparament s'est juste un pointeur sur pointeur tous bebete je penser au liste ou a autre chose de plus commpliquer qui serai plus optimiser (on sais jamais, les programmeur sont vicieux^^), mais bon je vais me debrouiller avec sa alors. merci quand meme pour tes reponses.

  6. #6
    Membre éprouvé

    Profil pro
    Inscrit en
    Juin 2006
    Messages
    1 116
    Détails du profil
    Informations personnelles :
    Âge : 40
    Localisation : France

    Informations forums :
    Inscription : Juin 2006
    Messages : 1 116
    Par défaut man bash
    , Aux dernière nouvelles, les shells sont codés en C. Tu peux très bien appeler un shell depuis un shell, par contre, comment récupère-t-il les variables d'environnement ?

    Ça a à voir avec le processus d'init, la lecture des fichiers de configuration, etc, etc...

    Toi tu ne veux pas apprendre comment faire un shell, mais comment marche UNIX, c'est différent.

    Des shells open-sources, ce n'est pas ça qui manque. Tu oeux les étudier pour avoir des réponses à tes questions. Sache cependant, que, à mon avis, l'environnement des variables globales du shell peut être lu et modifié par n'importe quel processus.

    Donc, c'est simple, tu gères tes variables externes comme tu veux, personne ne t'oblige à adopter un quelconque méthode.

    Citation Envoyé par Vodsky Voir le message
    Bonjour,
    je cherche à savoir comment unix gere les variables d'environements de ses shell
    La seule réponse pertinente à ça, c'est de faire où d'aller voir un des liens ci dessus.

  7. #7
    Membre chevronné Avatar de dapounet
    Profil pro
    Étudiant
    Inscrit en
    Juillet 2007
    Messages
    469
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Juillet 2007
    Messages : 469
    Par défaut
    Bonjour,

    Citation Envoyé par Vodsky Voir le message
    Le truc c'est que, envoyer les variables du shell sur le quell je code mon shell est stupide parsqu'il me faut mes propre variable, donc je me sert de cela uniquement pour recuperer l'environement basic (ex: la variable TERM_CAP etc...) parsque se seront les meme pour mon shell mais si je souhaite en cree ou en effacer je dois avoir ma propre gestion des variables.
    Chaque processus a sa propre liste de variables d'environnement. Tu peux les modifier sans craindre que ça perturbe quelqu'un d'autre.

  8. #8
    Membre éprouvé

    Profil pro
    Inscrit en
    Juin 2006
    Messages
    1 116
    Détails du profil
    Informations personnelles :
    Âge : 40
    Localisation : France

    Informations forums :
    Inscription : Juin 2006
    Messages : 1 116
    Par défaut
    sauf si on utilise setenv() de manière délibérée

  9. #9
    Membre confirmé
    Profil pro
    Inscrit en
    Janvier 2009
    Messages
    59
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2009
    Messages : 59
    Par défaut
    Ok, s'est a peu pres tous se que je voulez savoir, je vous remerci de vos reponse.
    (et de votre patience)

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. [MS-DOS] Variable d'environement, fenêtre
    Par HNT dans le forum Scripts/Batch
    Réponses: 6
    Dernier message: 06/10/2005, 19h08
  2. [ANT] Ajout d'une variable d'environement au PATH
    Par Feustine dans le forum ANT
    Réponses: 1
    Dernier message: 25/08/2005, 18h16
  3. Réponses: 4
    Dernier message: 11/07/2005, 11h03
  4. Variable d'environement
    Par tanjonaravelson dans le forum Linux
    Réponses: 2
    Dernier message: 29/04/2005, 15h30
  5. variables d'environement dans un .bat
    Par Merkutio dans le forum Scripts/Batch
    Réponses: 13
    Dernier message: 11/10/2004, 18h12

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo