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 25/11/2006, à 18:11

Maxouille

[resolu]lancer un programme dans du C

Salut big_smile
J'aimerais savoir comment lancer un programme a partir d'un programme C
Je m'explique j'aimerais par exemple  que le texte "bonjour" s'affiche puis que par exemple firefox se lance ensuite
Comment inserer cela dans mon texte C svp .? ?   
(plus précisement je voudrai afficher un figlet)
MERCi de vos reponses

Dernière modification par Maxouille (Le 25/11/2006, à 19:08)

Hors ligne

#2 Le 25/11/2006, à 18:30

lunique

Re : [resolu]lancer un programme dans du C

Bonsoir

Apparement, la fonction
int system(const char *command);
contenu dans stdlib.h est faite pour toi

Apparement, sa fait un /bin/sh -c *command

plus d'informations avec "man 3 system"

Hors ligne

#3 Le 25/11/2006, à 18:38

Maxouille

Re : [resolu]lancer un programme dans du C

j'ai pas tout compris tongue
tu peux expliquer un peu stp smile
si je veux par exemple que sa lance "figlet max" dans le terminal je dois tapper quoi ?

Dernière modification par Maxouille (Le 25/11/2006, à 18:41)

Hors ligne

#4 Le 25/11/2006, à 18:46

lunique

Re : [resolu]lancer un programme dans du C

Apparement, tu crée ton programme C avec  :

char *commandealancer="figlet max";
int retour;
retour = system(commandealancer);

retour contient -1 en cas d'erreur, 0 si tout s'est bien passé, d'autres choses sinon (enfin ,c'est ce que j'ai compris ^ ^ )

P.S. je vais aller tester de ce pas

P.P.S je suppose que max est un nom de fichier, fait attention, tu pourrai avoir des surprises par rapport aux chemin du fichier smile


Exemple concret apres essai :

#include <stdlib.h>
int main(void)
{
char *toto="tuxguitar";
return system(toto);
}

lance le logiciel tuxguitar

Dernière modification par lunique (Le 25/11/2006, à 18:48)

Hors ligne

#5 Le 25/11/2006, à 18:55

Maxouille

Re : [resolu]lancer un programme dans du C

figlet max et un petit progr qui affiche MAX. un peu comme si tu met coeur et sa affiche <3  tu  comprends ? tongue

edit: ok sa yet je compren peu a peu ..
il faut introduire *un nom= la commande qui sera exécuté

et dans main ecrir return system(le nom doné );

C'est bien sa ?

Mais comment faire pour qu'il ne quiite pas le programme ?

Dernière modification par Maxouille (Le 25/11/2006, à 19:01)

Hors ligne

#6 Le 25/11/2006, à 19:00

Hadesis

Re : [resolu]lancer un programme dans du C

man 2 exec, et man 2 fork.

Ces deux appels system devraient t'aider. Renseigne toi sur leur utilisation.


HADESIS
Enjoy the life...

Hors ligne

#7 Le 25/11/2006, à 19:00

lunique

Re : [resolu]lancer un programme dans du C

char *toto="tuxguitar";
donc on definit une chaine de caractere (char *)qui s'appelle toto et qui contient tuxguitar (tuxguitar est un logiciel pour tablature)
donc pour toi, ce sera
char *toto="fidglet max";
apres, on fait appel a la fonction system qui permet de lancer la commande
et chez moi sa marche ^  ^

edit : chez moi, c'est "man 3 exec" et "man 2 fork"

Dernière modification par lunique (Le 25/11/2006, à 19:03)

Hors ligne

#8 Le 25/11/2006, à 19:02

Maxouille

Re : [resolu]lancer un programme dans du C

oui chez moi ossi sa marche tongue  meme si je ne connaisais pas char *
Mais sa quitte le programme sad

Hors ligne

#9 Le 25/11/2006, à 19:04

Maxouille

Re : [resolu]lancer un programme dans du C

c'est bon j'ai trouver tout seul tongue il faut simplement enlever return
MERCi bcp

Hors ligne

#10 Le 25/11/2006, à 19:05

lunique

Re : [resolu]lancer un programme dans du C

Un petit resolu dans le sujet du topic  alors  smile

Dernière modification par lunique (Le 25/11/2006, à 19:06)

Hors ligne

#11 Le 25/11/2006, à 19:07

Maxouille

Re : [resolu]lancer un programme dans du C

arff tongue
et sa fais quoi si je met char *nom="commande"

puis systeme(nom) ??

DAns ta deuxieme solution je dois mettre ou la commande qui sera éxécuté ?


edit;
bon ba je garde cette solution ?? c'est pareil ou pas ?

Dernière modification par Maxouille (Le 25/11/2006, à 19:08)

Hors ligne

#12 Le 25/11/2006, à 19:10

Maxouille

Re : [resolu]lancer un programme dans du C

me reste plus qu'a trouver comment mettre un caractere sad  comme + - / ou *

merci bcp big_smile

Dernière modification par Maxouille (Le 25/11/2006, à 19:10)

Hors ligne

#13 Le 25/11/2006, à 19:14

lunique

Re : [resolu]lancer un programme dans du C

Alors mettre
i=system(command);
ou
return=system(command);
ou juste
system(command);
executera la commande. Dans le 1er cas, tu stock le code erreur de l'execution de command dans un entier qui te permet de faire un test ensuite:

if (i ==-1){prtintf("erreur lors de l'execution de command");}

dans le deuxieme cas, sa termine ton programme C et renvoie au shell le code erreur d'execution de command
Dans le troisieme, sa execute la command et le programme continue sa route comme si de rien n'etait

Il est où le souci avec les + -  * / ?
Ah oui, l'etoile fait un truc particulier, doit vfalloir voir dans la doc de figlet

Dernière modification par lunique (Le 25/11/2006, à 19:18)

Hors ligne

#14 Le 25/11/2006, à 19:16

Maxouille

Re : [resolu]lancer un programme dans du C

je voudra le 3eme cas tongue
mais je doi declarer quand meme ?? car il me met
esai.c:9: error: ‘figlet’ undeclared (first use in this function)

Hors ligne

#15 Le 25/11/2006, à 19:19

lunique

Re : [resolu]lancer un programme dans du C

Tu dois declarer la chaine de caractere.

Hors ligne

#16 Le 25/11/2006, à 19:20

Maxouille

Re : [resolu]lancer un programme dans du C

oui donc sa revient a faire se que j'ai dis avant wink

>okey merci bcp a toi

Hors ligne

#17 Le 25/11/2006, à 19:24

lunique

Re : [resolu]lancer un programme dans du C

Pour l'etoile je te donne un exemple :
char *command="figlet \"*\" ";
Petite explication : on doit mettre l'etoile entre guillement car elle à un sens particulier pour le shell. Et on doit mettre des \ avant les guillemets de l'etoile pour ne pas fermet la chaine de caractere

Hors ligne