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 :

Programmation C en shell


Sujet :

Linux

  1. #1
    Membre du Club
    Inscrit en
    Novembre 2009
    Messages
    6
    Détails du profil
    Informations forums :
    Inscription : Novembre 2009
    Messages : 6
    Par défaut Programmation C en shell
    Salut a tous.

    Je suis arrivé a faire la première de cet exercice mais pas la deuxième.

    Lorsqu'un programme C démarre , son environnement est automatiquement copié dans un tableau de chaines de caractères . Ce tableau est disponible dans une variable globale environ , a déclarer ainsi en début du programme principal:
    extern char ** ;
    la routine getenv() déclarée permet d'afficher l'ensemble des variables d'environnement

    1.Écrire un programme C qui permet d'afficher l'ensemble des variables d'environnement d'un programme ainsi que leur valeurs

    2. Écrire un programme en shell bash qui permet d'obtenir le même résultat

    Pour la première question voila ma solution :

    Mon programme variables_environnement.c s’appuie sur la fonction putenv() pour affecter une
    nouvelle variable d'environnement MA_VARIABLE, avec le texte saisi. Il vérifie ensuite sa valeur
    à l’aide de la fonction getenv() (C’est une fonction en plus de ce qui a été demander). Enfin une boucle sur le tableau environ affiche l'ensemble des variables d'environnement.

    Code C : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    /* ------------------------- */
    /* variables_environnement.c */
    /* ------------------------- */
     
    #include <stdio.h>
    #include <string.h>
    #include <stdlib.h>
    #include <unistd.h>
     
    /* variable globale externe */
    extern char **environ ;
    main()
    {
    int i=0 ;
     
    char c,saisie[30],ma_var[30];
     
    /* saisie du contenu de la variable */
     
    printf("Contenu de la variable:") ;
     
    while((c=getchar())!='\n')
     
    saisie[i++]=c ;
     
    saisie[i]='\0';
    /* mise en forme de la chaine */
    /* MA_VARIABLE=texte_saisie */
     
    strcpy(ma_var,"MA_VARIABLE=") ;
    strcat(ma_var,saisie) ;
     
    /* positionnement de la variable */
    putenv(ma_var) ;
     
    /* consultation de la variable */
    printf("MA_VARIABLE: %s\n",getenv("MA_VARIABLE")) ;
     
    /* affichage de toutes les variables */
     
    printf("--- liste des variables ---\n") ;
    i=0;
     
    while (environ[i]!=NULL)
    printf("%s\n",environ[i++]) ;
    }
    Le résultat de ce programme est le suivant :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    $ variables_environnement
     
    Contenu de la variable: texte de la variable
     
    MA_VARIABLE: texte de la variable
     
    --- liste des variables ---
    PATH=/bin:/usr/bin:/usr/local/bin:/usr/X11R6/bin
    SHELL=/bin/ksh
    USER=lery
    TERM=xterm
    LANG=fr
    LOGNAME=lery
    HOME=/home/lery
    MA_VARIABLE=texte de la variable

    La liste des variables est en réalité plus longue. Je l’ai écourtée afin de simplifier.
    La variable ajoutée apparaît avec la valeur saisie. À la sortie du programme, la
    saisie de la commande « echo $MA_VARIABLE » affiche une ligne vide. Cela indique que cette variable n'existe plus. La variable a été créée dans l'environnement du processus fils (l'exécution du programme variables_environnement). Elle est inexistante dans celui du processus père, le shell :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    $ echo $MA_VARIABLE
     
    $
    mais pour la deuxième (en bash ) je bloque

    Merci.

  2. #2
    Membre prolifique
    Avatar de Sve@r
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Février 2006
    Messages
    12 838
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    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 : 12 838
    Billets dans le blog
    1
    Par défaut
    Citation Envoyé par prodi Voir le message
    À la sortie du programme, la
    saisie de la commande « echo $MA_VARIABLE » affiche une ligne vide. Cela indique que cette variable n'existe plus. La variable a été créée dans l'environnement du processus fils (l'exécution du programme variables_environnement). Elle est inexistante dans celui du processus père, le shell :
    Excellent - Parfaite compréhension des processus Unix.

    Citation Envoyé par prodi Voir le message
    mais pour la deuxième (en bash ) je bloque
    Tu écris un script qui appelle simplement la commande interne "set" (brut de fonderie, sans paramètre ni rien d'autre => elle t'affichera le contenu de ton environnement). Car après-tout, programmer en shell c'est écrire un script qui appelle ce qu'il faut quand il faut...
    Mon Tutoriel sur la programmation «Python»
    Mon Tutoriel sur la programmation «Shell»
    Sinon il y en a pleins d'autres. N'oubliez pas non plus les différentes faq disponibles sur ce site
    Et on poste ses codes entre balises [code] et [/code]

  3. #3
    Membre du Club
    Inscrit en
    Novembre 2009
    Messages
    6
    Détails du profil
    Informations forums :
    Inscription : Novembre 2009
    Messages : 6
    Par défaut
    Tu écris un script qui appelle simplement la commande interne "set" (brut de fonderie, sans paramètre ni rien d'autre => elle t'affichera le contenu de ton environnement). Car après-tout, programmer en shell c'est écrire un script qui appelle ce qu'il faut quand il faut..
    Justement je bloques sur cette partie . je suis débutant en shell donc si quelqu'un pouvait m'aider sa serait bien.

  4. #4
    Membre prolifique
    Avatar de Sve@r
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Février 2006
    Messages
    12 838
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    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 : 12 838
    Billets dans le blog
    1
    Par défaut
    Citation Envoyé par prodi Voir le message
    Justement je bloques sur cette partie . je suis débutant en shell donc si quelqu'un pouvait m'aider sa serait bien.
    Ou bien
    Il y a une légère différence entre les 2. La seconde ne donne que la liste de l'environnement qui est exporté.
    Mon Tutoriel sur la programmation «Python»
    Mon Tutoriel sur la programmation «Shell»
    Sinon il y en a pleins d'autres. N'oubliez pas non plus les différentes faq disponibles sur ce site
    Et on poste ses codes entre balises [code] et [/code]

Discussions similaires

  1. Programmation système : commande shell
    Par aradouani dans le forum Linux
    Réponses: 8
    Dernier message: 24/05/2011, 10h13
  2. programmer un mini shell!
    Par nixmind dans le forum C
    Réponses: 36
    Dernier message: 21/11/2010, 18h05
  3. [TOOL] programmation C sous Shell
    Par esa66 dans le forum Linux
    Réponses: 1
    Dernier message: 26/03/2009, 18h27
  4. Programme C / Script Shell Extension Firefox
    Par Tibolec dans le forum Autres langages pour le Web
    Réponses: 1
    Dernier message: 11/07/2008, 22h41
  5. programme C++ avec shell
    Par I_believe_I_can_fly dans le forum C++
    Réponses: 11
    Dernier message: 24/10/2005, 17h08

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