#1 Le 13/04/2008, à 18:22
- Vergeylen
[Résolu] Insérer des commandes Bash dans un programme C
Bonjour,
Je souhaiterais faire un petit programme qui lancerait certaines commandes bash dans un terminal. Existe-t-il une façon typique et propre de le faire? Je pense notamment quand on a besoin de faire des applications plus avancées que celles utilisant zenity (un peu limité) et nécessitant de lancer des commandes en console (un peu comme inkscape par exemple).
Par exemple, imaginons que je veux lancer dans un terminal :
lp unfichier Imprimante_PDF
Quelqu'un aurait une piste?
Merci et désolé si je fais un Doublon mais je n'ai pas trouvé (et Google n'est pas vraiment mon ami sur ce coup ).
Daniel V.
Dernière modification par Vergeylen (Le 15/04/2008, à 07:32)
Hors ligne
#2 Le 13/04/2008, à 18:24
- slasher_fun
Re : [Résolu] Insérer des commandes Bash dans un programme C
system("lp unfichier Imprimante_PDF");
Hors ligne
#3 Le 13/04/2008, à 18:41
- Link31
Re : [Résolu] Insérer des commandes Bash dans un programme C
Je souhaiterais faire un petit programme qui lancerait certaines commandes bash dans un terminal. Existe-t-il une façon typique et propre de le faire?
Si tu veux faire ça proprement, déjà tu ne lances pas de commandes bash, tu ne lances même pas de shell.
Il vaut mieux utiliser fork() suivi de l'une des fonctions exec**().
Hors ligne
#4 Le 14/04/2008, à 21:52
- Vergeylen
Re : [Résolu] Insérer des commandes Bash dans un programme C
Bonsoir,
Merci de vos réponses!
Link31, je ne connais pas l'instruction fork() , peux-tu m'éclairer un petit peu si tu as le temps(faut pas m'en vouloir hein, je débute
)?
Merci beaucoup!
Daniel V.
Hors ligne
#5 Le 14/04/2008, à 22:30
- Link31
Re : [Résolu] Insérer des commandes Bash dans un programme C
Les fonctions exec*() (execvp(), execlp(), execve()...) remplacent le processus d'origine par le nouveau processus. Comme tu ne veux probablement pas que ça arrive, il faut dupliquer ton processus avec fork() puis, selon la valeur de retour de fork(), soit continuer ton programme normalement soit lancer une fonction exec*().
Ainsi, tu auras un processus père, ton programme, et un processus fils, la "commande" que tu voulais exécuter. C'est d'ailleurs exactement de cette manière que s'y prend bash pour lancer des programmes.
Et comme il s'agira de deux processus différents, il s'exécuteront en parallèle
Si tu ne veux pas qu'ils s'exécutent en parallèle, utilise la fonction wait() dans le processus père.
Dernière modification par Link31 (Le 14/04/2008, à 22:31)
Hors ligne
#6 Le 15/04/2008, à 07:32
- Vergeylen
Re : [Résolu] Insérer des commandes Bash dans un programme C
Ok merci beaucoup!
Bonne Journée!
Daniel V.
Hors ligne