Contenu | Rechercher | Menus

Annonce

Si vous avez des soucis pour rester connecté, déconnectez-vous puis reconnectez-vous depuis ce lien en cochant la case
Me connecter automatiquement lors de mes prochaines visites.

À propos de l'équipe du forum.

#1 Le 13/04/2008, à 19: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 hmm).

Daniel V.

Dernière modification par Vergeylen (Le 15/04/2008, à 08:32)

Hors ligne

#2 Le 13/04/2008, à 19:24

slasher_fun

Re : [Résolu] Insérer des commandes Bash dans un programme C

system("lp unfichier Imprimante_PDF");

smile

Hors ligne

#3 Le 13/04/2008, à 19:41

Link31

Re : [Résolu] Insérer des commandes Bash dans un programme C

Vergeylen a écrit :

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, à 22: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() sad, peux-tu m'éclairer un petit peu si tu as le temps(faut pas m'en vouloir hein, je débute roll)?

Merci beaucoup!

Daniel V.

Hors ligne

#5 Le 14/04/2008, à 23: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 smile
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, à 23:31)

Hors ligne

#6 Le 15/04/2008, à 08:32

Vergeylen

Re : [Résolu] Insérer des commandes Bash dans un programme C

Ok merci beaucoup!

Bonne Journée!

Daniel V.

Hors ligne