[Linux et c] lancement d'une appli a partir de mon programme

lancement d'une appli a partir de mon programme [Linux et c] - Programmation

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 ++

Reply

Marsh Posté le 22-12-2001 à 19:13:39   

Reply

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

Reply

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 */


---------------
Au royaume des sourds, les borgnes sont sourds.
Reply

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 ++

Reply

Marsh Posté le 24-12-2001 à 09:46:36    

et c'est quoi gtk ??

Reply

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 .


---------------

Reply

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

Reply

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

Reply

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é


---------------

Reply

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();
 
:D

Reply

Marsh Posté le 25-12-2001 à 21:12:30   

Reply

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

Reply

Sujets relatifs:

Leave a Replay

Make sure you enter the(*)required information where indicate.HTML code is not allowed