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

Fermé
Hitchy - 25 avril 2005 à 11:40
mamiemando
Messages postés
31320
Date d'inscription
jeudi 12 mai 2005
Statut
Modérateur
Dernière intervention
17 août 2022
- 20 juin 2012 à 21:39
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.

3 réponses

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
./script.sh >> log.o
Ca devrai t'aider.
Les tubes ca aide mais bon pas facile a géré.
0
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
Char Snipeur
Messages postés
9688
Date d'inscription
vendredi 23 avril 2004
Statut
Contributeur
Dernière intervention
2 octobre 2020
1 329
20 juin 2012 à 16:21
éventuellement popen, même si ça revient un peu au même que system().
0
mamiemando
Messages postés
31320
Date d'inscription
jeudi 12 mai 2005
Statut
Modérateur
Dernière intervention
17 août 2022
7 400
20 juin 2012 à 21:39
Attention à ne pas oublier le pclose si le popen réussit.
0
tafiscobar
Messages postés
1277
Date d'inscription
jeudi 7 décembre 2000
Statut
Contributeur
Dernière intervention
26 février 2009
177
25 avril 2005 à 12:19
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
mamiemando
Messages postés
31320
Date d'inscription
jeudi 12 mai 2005
Statut
Modérateur
Dernière intervention
17 août 2022
7 400
Modifié par mamiemando le 20/06/2012 à 21:38
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