[C++] Inclure du shelle scripting dans C++

bonjour à tous,

J'ai un petit soucis....(c'est en général pour ça qu'on fait appel à vous).
J'ai un code que j'ai écrit en shell-scripting. Cependant, on me demande de l'écrire en C++ pour établir une interface graphique.
Je pense qu'il est largement faisable d'inclure du Shell (linux of coure) dans du C++, mais comment fait on ?
Auriez vous des liens (j'ai pas trouvé sur google) expliquant la compatiblité entre les variables shell et C++ ?

Pour info, mon code traite surtout du texte et quelques fichiers de conf.

Merci à tous.
Configuration: Linux Mandrake 10.0

3 réponses

  1. Ok oK....

    Bon je me suis lancé dans la traduction de mon code complet en C++.
    Par contre, j'ai des commandes Shell que je dois absolument inclure dans le code C++.
    Le problème est que certaines commandes contienent des variables.

    Exemple : je souhiate inclure cette commande :

    ifconfig eth0 inet VARIABLE netmask VARIABLE2

    Comment puis je inclure cette commande et lui faire comprendre les variables C++ ?
    1
    1. ./script.sh >> log.o
      Ca devrai t'aider.
      Les tubes ca aide mais bon pas facile a géré.
      0
    2. Bonjour , est-ce que ta trouver une solution autre que système , parce que j ai le même problème et je je veux pas utiliser la fonction système

      merci
      0
    3. Contributeur
      éventuellement popen, même si ça revient un peu au même que system().
      0
    4. Modérateur
      Attention à ne pas oublier le pclose si le popen réussit.
      0
  2. Contributeur
    salut, Shell+CC => du jamais vu.

    Tout ce que tu peu faire c'est exécuter des commandes a partir du C/CC, avec les fcts posix adéquates la famille exec (man 3 exec) et les processus. Néanmoins, avec posix tu as accés a certaines variables d'environnement que tu pe modifier ou y accéder.
    0
    1. Modérateur
      Au pire tu peux utiliser les fonctions system ou execvp. Mais c'est a éviter car ça veut dire que le programme va dépendre du shell (bash, tcsh...) et même de l'OS (windows, linux..) ce qui est pas très recommandé.
      http://www.linux-kheops.com/doc/man/manfr/man-html-0.9/man3/system.3.html
      http://www.linux-kheops.com/doc/man/manfr/man-ascii-0.9/man3/execvp.3.txt.html

      Ceci dit tu peux te débrouiller pour qu'à la compilation tu considères des sections de code "windows" et "linux" avec des #define.

      Exemple :

      
      #include <cstdlib>   
      
      int main() {
      #ifdef WINDOWS
        system("ipconfig");
      #endif   
      #ifdef LINUX   
        system("/sbin/ifconfig");   
      #endif   
        return 0;   
      }


      La commande execvp permet quant à elle de passer des arguments :

      Exemple :
      http://sardes.inrialpes.fr/~mossiere/Telecom/Systeme/minishell/td_shell.pdf

      Bonne chance
      0