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

Hitchy -  
mamiemando Messages postés 33228 Date d'inscription   Statut Modérateur Dernière intervention   -
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. Hitchy
     
    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. D
       
      ./script.sh >> log.o
      Ca devrai t'aider.
      Les tubes ca aide mais bon pas facile a géré.
      0
    2. hennouni
       
      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. Char Snipeur Messages postés 10112 Date d'inscription   Statut Contributeur Dernière intervention   1 331
       
      éventuellement popen, même si ça revient un peu au même que system().
      0
    4. mamiemando Messages postés 33228 Date d'inscription   Statut Modérateur Dernière intervention   7 944
       
      Attention à ne pas oublier le pclose si le popen réussit.
      0
  2. tafiscobar Messages postés 1281 Statut Contributeur 177
     
    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
  3. mamiemando Messages postés 33228 Date d'inscription   Statut Modérateur Dernière intervention   7 944
     
    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