#1 Le 25/11/2006, à 17:11
- Maxouille
[resolu]lancer un programme dans du C
Salut
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, à 18:08)
Hors ligne
#2 Le 25/11/2006, à 17: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, à 17:38
- Maxouille
Re : [resolu]lancer un programme dans du C
j'ai pas tout compris
tu peux expliquer un peu stp
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, à 17:41)
Hors ligne
#4 Le 25/11/2006, à 17: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
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, à 17:48)
Hors ligne
#5 Le 25/11/2006, à 17: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 ?
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, à 18:01)
Hors ligne
#6 Le 25/11/2006, à 18: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, à 18: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, à 18:03)
Hors ligne
#8 Le 25/11/2006, à 18:02
- Maxouille
Re : [resolu]lancer un programme dans du C
oui chez moi ossi sa marche meme si je ne connaisais pas char *
Mais sa quitte le programme
Hors ligne
#9 Le 25/11/2006, à 18:04
- Maxouille
Re : [resolu]lancer un programme dans du C
c'est bon j'ai trouver tout seul il faut simplement enlever return
MERCi bcp
Hors ligne
#10 Le 25/11/2006, à 18:05
- lunique
Re : [resolu]lancer un programme dans du C
Un petit resolu dans le sujet du topic alors
Dernière modification par lunique (Le 25/11/2006, à 18:06)
Hors ligne
#11 Le 25/11/2006, à 18:07
- Maxouille
Re : [resolu]lancer un programme dans du C
arff
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, à 18:08)
Hors ligne
#12 Le 25/11/2006, à 18:10
- Maxouille
Re : [resolu]lancer un programme dans du C
me reste plus qu'a trouver comment mettre un caractere comme + - / ou *
merci bcp
Dernière modification par Maxouille (Le 25/11/2006, à 18:10)
Hors ligne
#13 Le 25/11/2006, à 18: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, à 18:18)
Hors ligne
#14 Le 25/11/2006, à 18:16
- Maxouille
Re : [resolu]lancer un programme dans du C
je voudra le 3eme cas
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, à 18:19
- lunique
Re : [resolu]lancer un programme dans du C
Tu dois declarer la chaine de caractere.
Hors ligne
#16 Le 25/11/2006, à 18:20
- Maxouille
Re : [resolu]lancer un programme dans du C
oui donc sa revient a faire se que j'ai dis avant
>okey merci bcp a toi
Hors ligne
#17 Le 25/11/2006, à 18: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