Ouverture, fermeture programme

cs_Guigar Messages postés 105 Date d'inscription mercredi 12 novembre 2008 Statut Membre Dernière intervention 8 juin 2011 - 19 janv. 2009 à 14:59
cs_Guigar Messages postés 105 Date d'inscription mercredi 12 novembre 2008 Statut Membre Dernière intervention 8 juin 2011 - 21 janv. 2009 à 08:21
Bonjour a tous

Je voudrais faire un programme qui puisse me lancer un autre programme en C sous linux

ma commande qui permet de le faire est :

system("/mondossier/monprogramme")

jusqu'ici tout va bien... Sauf

que lorsque mon programme C se ferme, le programme "monprogramme" se ferme aussi. Y'a t'il une solution pour forcer "monprogramme" a rester ouvert???

Merci d'avance

8 réponses

Pistol_Pete Messages postés 1053 Date d'inscription samedi 2 octobre 2004 Statut Membre Dernière intervention 9 juillet 2013 7
19 janv. 2009 à 21:45
Salut
Je pense qu'il faut créer un nouveau processus pour exécuter monprogramme.
Essaie avec un petit fork et un execlp pour remplacer le code de ton processus père (ou fils)par le code de l'exe monprogramme. La tes 2 programmes seront complètement indépendant.
A+
____________________________________________________________________________
Mon site internet :  http://imAnalyse.free.fr
http://ImAnalyse.free.fr
0
cs_Guigar Messages postés 105 Date d'inscription mercredi 12 novembre 2008 Statut Membre Dernière intervention 8 juin 2011
20 janv. 2009 à 09:45
est ce tu pourrais préciser un peu s'il te plait ? je débute dans le C sous linux.

je sais que le fork sert a la création de processus et que le execlp sert a remplacer un processus par un autre. Mais je ne sais pas trop comment utiliser les 2.

est ce que tu pense que la chose suivante serait bonne  ?

pid_t pid;
   if ((pid fork()) -1)
   {  perror("fork"); exit(1);
   }
   if (pid == 0)
   {  execlp("/mondossier/monprograppe", NULL);
     
      perror("execlp");
      exit(1);
   }

je n'ai pas encore eu le temps de le tester

merci d'avance
0
cs_Guigar Messages postés 105 Date d'inscription mercredi 12 novembre 2008 Statut Membre Dernière intervention 8 juin 2011
20 janv. 2009 à 09:51
ben en fait je viens de remplacer mon code par celui que je viens de donner et cela fait pareil... comprends pas trop comment ca peur marcher

merci d'avance
0
cs_Guigar Messages postés 105 Date d'inscription mercredi 12 novembre 2008 Statut Membre Dernière intervention 8 juin 2011
20 janv. 2009 à 15:33
en fait j'ai trouvé le probleme

j'aimerai savoir si il existe un parametre a donner a execlp pour ignorer les erreurs de lancement du programme fils ?

car en lancant le programme depuis le mode console, j'ai des erreurs mais le programme se lance, mais depuis le programme C++ les erreurs s'affichent et rien de plus.

(j'ai testé en faisant execlp("nedit",0); et ca marche bien , nedit reste ouvert

merci d'avance
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
Pistol_Pete Messages postés 1053 Date d'inscription samedi 2 octobre 2004 Statut Membre Dernière intervention 9 juillet 2013 7
20 janv. 2009 à 18:21
ReSalut

Je ne comprend pas très bien la différence quand tu dis: quand je lance le programme depuis la console et depuis le programme C++.

Pour savoir s'il y a des paramètres a donner a execlp pour ignorer les erreurs de lancement du programme fils, je ne pense pas que.
execlp ne fait rien de plus que de tout effacer le code de son processus pour le remplacer par le code de ton exe.
Est ce que tu fermes la console aussi?
A+
____________________________________________________________________________
Mon site internet :  http://ImAnalyse.free.fr
http://ImAnalyse.free.fr
0
cs_Guigar Messages postés 105 Date d'inscription mercredi 12 novembre 2008 Statut Membre Dernière intervention 8 juin 2011
20 janv. 2009 à 19:16
merci de votre rapidité

je m'explique mieux

je lance donc de mon terminal ou Xterm (ca fait la meme chose) FlightGear

celui ci fait des erreurs au lancement du a une version mauvaise de Glut. Il fait donc des erreurs dans la console, mais continue de se lancer et  marche tres bien a l'écran, pas de probleme de fluidité ou quoique se soit.

Maintenant je veux lancer ce programme depuis un programme en C. Ce que j'arrive parfaitement a faire. La console affiche la premiere erreur, lance la fenetre du jeux, puis la fenetre du jeux se ferme avec les autres erreur sur la console.

Dans les deux cas, les erreurs du au jeux Flightgear sont strictement le meme. En mode manuel, ca marche, en mode lancement via le programme en C, ca plante.... mystere...

donc je pense que le mode console lancé a partir du programme C ne soit pas tout a fait le meme que la vrai console.

Si quelqu'un a une explication...

MErci encore pour vos réponse et vous en remmercie pour celle déja apporté qui m'ont été tres utiles
0
cs_Guigar Messages postés 105 Date d'inscription mercredi 12 novembre 2008 Statut Membre Dernière intervention 8 juin 2011
21 janv. 2009 à 08:21
probleme résolu j'ai installé la version 2.2 de GLUT plus de soucis, encore merci des infos !!!
0
cs_Guigar Messages postés 105 Date d'inscription mercredi 12 novembre 2008 Statut Membre Dernière intervention 8 juin 2011
21 janv. 2009 à 08:21
je suis passé de la 2.4.0 de freeglut a la 2.2.0 si ca peut en aider quelque un...

Bonne journée
0
Rejoignez-nous