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

C Discussion :

commande shell dans un programme


Sujet :

C

  1. #1
    Membre à l'essai
    Profil pro
    Inscrit en
    Août 2003
    Messages
    13
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Août 2003
    Messages : 13
    Points : 11
    Points
    11
    Par défaut commande shell dans un programme
    Bonjour,
    Je développe sous linux avec gcc et je voudrai savoir comment dans un programme en c on peut executer une commande shell
    ( ici "/etc/init.d/samba reload" ) .


    Merci

  2. #2
    Responsable technique

    Avatar de Anomaly
    Homme Profil pro
    Directeur
    Inscrit en
    Juin 2003
    Messages
    10 351
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 44
    Localisation : France, Somme (Picardie)

    Informations professionnelles :
    Activité : Directeur
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Juin 2003
    Messages : 10 351
    Points : 130 312
    Points
    130 312
    Billets dans le blog
    1
    Par défaut Re: commande shell dans un programme
    Avec la fonction system(), définie dans stdlib.h. Elle appelle un shell, donc tu peux exécuter directement des commandes internes.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    system("/etc/init.d/samba reload");

  3. #3
    Membre à l'essai
    Profil pro
    Inscrit en
    Août 2003
    Messages
    13
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Août 2003
    Messages : 13
    Points : 11
    Points
    11
    Par défaut
    Merci, vraiment rapide la reponse.

  4. #4
    Membre actif
    Profil pro
    Inscrit en
    Juillet 2003
    Messages
    304
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juillet 2003
    Messages : 304
    Points : 253
    Points
    253
    Par défaut
    Tu as deux solutions a ton problème mais celle qu'a donné anomaly est incontestablement la plus simple a éxecuter:
    • 1)
      Code : Sélectionner tout - Visualiser dans une fenêtre à part
      int system(const char* commande);
      Solution d'anomaly. L'inconvénient de celle ci , si on peut dire que c'est un inconvénient est qu'il y a éxécution d'un nouveau bash et que ce n'est pas nécessaire. En cours on me disait toujours de bannir l'appel systeme system

    • 2)
      L'autre solution est dupliquer ton processus et de recouvrir le fils
      explication:
      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
      16
      17
      18
      19
      20
      21
      22
      23
      24
      25
      26
      27
      28
       
      #include <unistd.h>
      #include <stdlib.h>
       
      int nPid=fork();
      switch(nPid)
      {
      case 0: 
      {
      /* On est dans le processus fils on recouvre */
       
      execlp("ligne de commande", "argument");
       
      /* Dans ce cas tu utilises un appel systeme dérivée d'execve qui
      execlp dont le prototype est :
      int execlp(const char* application, const char* arg);
      il faut d'ailleurs ne pas oublier que argv[0]=application sinon ca marche pas!!
      */
      }
      default:
      {
      /* On est dans le processus pere*/
       
      wait(NULL); /* On attend que le fils ait terminé l'execution */
       
      }
       
      }

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

Discussions similaires

  1. récuperer la sortie d'une commande shell dans un programme C
    Par Biosox dans le forum Applications et environnements graphiques
    Réponses: 3
    Dernier message: 21/08/2009, 12h55
  2. Invite de commande (shell) dans un programme java
    Par Fused dans le forum Général Java
    Réponses: 2
    Dernier message: 07/08/2009, 15h57
  3. commande shell dans programme C
    Par horkets dans le forum C
    Réponses: 1
    Dernier message: 01/11/2006, 15h55
  4. utilisation des commandes shell dans un programme C
    Par rasgueados dans le forum Linux
    Réponses: 15
    Dernier message: 03/08/2006, 18h25
  5. Réponses: 2
    Dernier message: 09/06/2006, 11h06

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