lancement d'une appli a partir de mon programme [Linux et c] - Programmation
Marsh Posté le 22-12-2001 à 20:15:02
system(¨blabla &¨);
mais c est tres porc de faire ca parcequ on a plus aucun controle sur l appli lancee ...
il vo mieux utiliser execve ou execvp
il y a toute une serie de execvqqchose
ca permet de recuperer le pid qui seras tres utile
man execvp pour les infos
Marsh Posté le 22-12-2001 à 20:30:48
Si tu veux que ton prog garde la main, il faut faire executer l'appli par un autre processus :
int n = fork();
if (n == 0)
execlp("appli","nom_a_la_con","param".., NULL);
else
/* Suite du prog */
Marsh Posté le 23-12-2001 à 17:24:08
erf , ca marche pas genial ce truc :=(
je viens de tester , ca fait rien du tout , je pige pas
en faite je cherche a lancer un prog (qui tourne en ligne de commande) a partir de mon prog en gtk , je c pas si y a d'autre moyen , sous win avec les api je c faire mais la caca , y a pa des api qui permete de faire ca sans probleme ??
voila ++
Marsh Posté le 24-12-2001 à 11:33:50
bilbobman a écrit a écrit : erf , ca marche pas genial ce truc :=( je viens de tester , ca fait rien du tout , je pige pas en faite je cherche a lancer un prog (qui tourne en ligne de commande) a partir de mon prog en gtk , je c pas si y a d'autre moyen , sous win avec les api je c faire mais la caca , y a pa des api qui permete de faire ca sans probleme ?? voila ++ |
normalement , ca marche , je l'utilise regulierement .
Marsh Posté le 24-12-2001 à 11:47:52
Fork a écrit a écrit : et c'est quoi gtk ?? |
Gtk c'est une surcouche graphique
Ca doit vouloir dire Graphic Tool Kit mais là je ne suis plus très sur
En tout cas c'est très pratique même si à l'époque je ne trouvais pas ça super stable
Bonhomme
Marsh Posté le 24-12-2001 à 23:02:29
gtk = Gimp ToolKit
voila je vais re-tester et vous dire quoi , mais la ca devrai aller meiux j'ai eu un bo livre pour nouel ou y explqiue bien coment faire .
sinon , y commence a partir en couille au moment ou y fait : int n = fork(); la il y arrive deja pas , vu que n=-1 donc j'ai une erreur la , enfin je vous dit quoi quand j'ai trouver
++ et merci
Marsh Posté le 25-12-2001 à 02:49:00
#include<unistd.h>
si mes souvenirs sont bons .
a part ca , regarde avec la valeur de ERRNO pour savoir pourquoi n=-1.
la derniere fois qu'il m'a fait ca, c'est que mon prog se multipliait et que j'ai depassé mon nombre de process max ( 128 par defaut ) => reboot du serveur de la fac obligatoire, root a apprecié
Marsh Posté le 25-12-2001 à 21:12:30
Tu forkes pour créer deux processus, qui ont tout deux les même données (non partagées!) et le même prog executable. Ensuite dans un de tes processus (que tu identifie par son pid retourné par fork() ), de préférence le père (cad pid = 0 si je me souviens bien). Ensuite un appel a execv permet de charger un nouveau prog en mémoire.
Si rien ne marche essaye ca:
while(1) fork();
Marsh Posté le 25-12-2001 à 22:01:30
vi j'avais pas comprit trop le principe , la je pige mieux en faite l'enfant a la valeur 0 et le parent a une autre valeur (!= de 0) donc ce qui executer dans le if = 0 c pour l'enfant , ca deja je l'avait pas comprit , enfin la ca marche , je c pas pk enfin les myster de l'informatique :=)
voila , je vous remercie ++ et encore merci
Marsh Posté le 22-12-2001 à 19:13:39
voila , je voudrait lancer une appli a partir de mon programme , sans pour autant etre bloquer , avec la fonction system() , je suis bloquer , quelqu'un aurait-il une idee ??
merci d'avance ++