Probleme avec la fonction system()

Probleme avec la fonction system() - C - Programmation

Marsh Posté le 10-01-2007 à 20:25:46    

Bonjour,
 
j'aimerai créer un exécutable en C qui me permette de lancer une application php-gtk.
Normalement l'application php-gtk se lance grace a des ligne de commande du genre :
 

Code :
  1. C:\>cd php-gtk
  2. C:\php-gtk>gtkpath
  3. C:\php-gtk>php demos/phpgtk2-demo.php


 
gtkpath étant un fichier .bat dont le contenu est le suivant :
 

Code :
  1. @ECHO OFF
  2. REM Change this to reflect the absolute path to your PHP-GTK installation directory
  3. REM rather than \php-gtk
  4. REM Open up your commandline and type 'gtkpath' to load the GTK+ 2.6.9 runtime
  5. SET PATH=\php-gtk\gtk+2.6.9


 
J'ai donc fais en C:
 

Code :
  1. #include <stdlib.h>
  2. #include <iostream.h>
  3. int main(int argc,char *argv[])
  4. {
  5.     system("c:/php-gtk/gtkpath" );
  6.     system("c:/php-gtk/php c:/php-gtk/demos/phpgtk2-demo.php" );
  7.     return 0;   
  8. }


 
Le problème vient du fait que j'ai l'impression que mon bousin execute les commandes dans 2 fenetres dos séparées ce qui fait la variable PATH initialisée dans le gtkpath.bat n'est pas "visible" par la deuxieme commande.
 
Auriez vous une solution a ce probleme ?

Reply

Marsh Posté le 10-01-2007 à 20:25:46   

Reply

Marsh Posté le 10-01-2007 à 20:41:36    

1/ Pourquoi lancer ces exécutions via un programme C ? N'y a-t-il aucune autre solution ?
 
2/ Si pas d'autre solution, soit tu regroupes ces commandes dans un batch que tu lances avec system(), soit tu lances tout ça avec un seul system().

Reply

Marsh Posté le 10-01-2007 à 20:48:19    

Et ca donnerai quoi avec un seul system ?
J'ai essayé mais j'ai pas réussi à trouver la synthaxe.
 
 

Code :
  1. system("c:/php-gtk/gtkpath\nc:/php-gtk/php c:/php-gtk/demos/phpgtk2-demo.php" );

Message cité 1 fois
Message édité par Absyn7he le 10-01-2007 à 20:48:51
Reply

Marsh Posté le 10-01-2007 à 23:29:10    

Absyn7he a écrit :

Le problème vient du fait que j'ai l'impression que mon bousin execute les commandes dans 2 fenetres dos séparées ce qui fait la variable PATH initialisée dans le gtkpath.bat n'est pas "visible" par la deuxieme commande.


Exactement - Les deux commandes ne se passent pas dans le même processus et le second n'a pas accès aux variables du premier
 

Absyn7he a écrit :

Et ca donnerai quoi avec un seul system ?
J'ai essayé mais j'ai pas réussi à trouver la synthaxe.
 

Code :
  1. system("c:/php-gtk/gtkpath\nc:/php-gtk/php c:/php-gtk/demos/phpgtk2-demo.php" );



Ptet ça:

Code :
  1. system("c:/php-gtk/gtkpath;c:/php-gtk/php c:/php-gtk/demos/phpgtk2-demo.php" );


Message édité par Sve@r le 10-01-2007 à 23:31:06

---------------
Vous ne pouvez pas apporter la prospérité au pauvre en la retirant au riche.
Reply

Marsh Posté le 11-01-2007 à 13:26:52    

Absyn7he a écrit :

Le problème vient du fait que j'ai l'impression que mon bousin execute les commandes dans 2 fenetres dos séparées ce qui fait la variable PATH initialisée dans le gtkpath.bat n'est pas "visible" par la deuxieme commande.


Normal. Quand tu fais 'system(), tu crées un processus fils dans lequel la variable est créée, mais quand le processus se termine, cette variable est détruite. Le processus père est inchangé.

 

Si tu veux faire un programme en C il faut écrire le code de A à Z, et ne pas chercher à modifier des variables d'environnement (elle ne peuvent qu'être lues en C standard, pour les raisons invoquées ci-dessus).


Message édité par Emmanuel Delahaye le 11-01-2007 à 13:27:53

---------------
Des infos sur la programmation et le langage C: http://www.bien-programmer.fr Pas de Wi-Fi à la maison : http://www.cpl-france.org/
Reply

Sujets relatifs:

Leave a Replay

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