Forum |  HardWare.fr | News | Articles | PC | S'identifier | S'inscrire | Shop Recherche
1052 connectés 

  FORUM HardWare.fr
  Programmation
  Java

  Execution d'un programme C dans du java

 


 Mot :   Pseudo :  
 
Bas de page
Auteur Sujet :

Execution d'un programme C dans du java

n°1108471
cachalot
Demarrer->Arreter :belle philo
Posté le 05-06-2005 à 01:27:19  profilanswer
 

Bonjour, dans le cadre d'un projet je dois lancer plusieurs applications a partir d'un programme java.
 
Premier lancement : le C++ je m'y suis pris comme ca et ca fonctionne
Ce programme C++ etant avec interface graphique:
 

Code :
  1. if  (aux == tcp_cpp){
  2.          
  3.             Runtime run= Runtime.getRuntime();
  4.             String cmd= "TCP_cpp.exe";
  5.              try {
  6.               Process proc= run.exec(cmd);
  7.              } catch (IOException e1) {
  8.               e1.printStackTrace();
  9.              }
  10.            
  11.              }


 
Deuxieme lancement : le C sans interface graphique et je m'y suis pris de la meme facon :

Code :
  1. if  (aux == tcp_c){
  2.              System.out.println("ok" );
  3.              Runtime run= Runtime.getRuntime();
  4.                 String cmd= "TCP_c.exe";
  5.                   try {
  6.                
  7.                    Process proc= run.exec(cmd);
  8.                   } catch (IOException e1) {
  9.                    e1.printStackTrace();
  10.                   }
  11.                   System.out.println("ok" );
  12.                   }


 
Resultat : dans la console les 2 "ok" s'affiche mais le programme ne se lance pas  
 
Si quelqu'un pourrait m'eclairer sur ce probleme je suis preneur

mood
Publicité
Posté le 05-06-2005 à 01:27:19  profilanswer
 

n°1108476
Profil sup​primé
Posté le 05-06-2005 à 01:39:54  answer
 

Pourquoi tu parles de C et C++, c'est quoi le rapport avec la choucroute ?

n°1108480
cachalot
Demarrer->Arreter :belle philo
Posté le 05-06-2005 à 01:43:33  profilanswer
 

parce que g une premiere appli en java avec 2 boutons :
un qui s'appelle C++ qd on clique dessus il lance le premier code
un deuxieme qui s'appelle C et qui (est censé)lancer le deuxieme code  
=>le programme en C ne se lancant pas

n°1108487
manatane
En vous remerciant, bonsoir
Posté le 05-06-2005 à 01:46:09  profilanswer
 

quand tu le lances seul en console il marche ton programme C, genre il fait pas un coredump?

n°1108491
Profil sup​primé
Posté le 05-06-2005 à 01:48:21  answer
 

Ok ça j'avais compris. Mais ça aurait été programmé en brainfuck que je vois pas ce que ça changerait.
 
Sinon je vois mal comment on peut t'aider avec si peu d'informations. Il faudrait nous dire ce qu'est censé faire "TCP_c.exe".

n°1108495
cachalot
Demarrer->Arreter :belle philo
Posté le 05-06-2005 à 01:50:43  profilanswer
 

quand je lance en console pas de probleme  
TCP_c.exe : demande a l'utilisateur une adresse ip un port et un message le tout est envoyer a un serveur d'echo qui repond la chaine que l'utilisateur a tapper  
mais il se passe rien du tout je vois meme pas une fenetre dos qui s'ouvre

n°1108505
Profil sup​primé
Posté le 05-06-2005 à 02:06:02  answer
 

cachalot a écrit :

quand je lance en console pas de probleme  
TCP_c.exe : demande a l'utilisateur une adresse ip un port et un message le tout est envoyer a un serveur d'echo qui repond la chaine que l'utilisateur a tapper  
mais il se passe rien du tout je vois meme pas une fenetre dos qui s'ouvre


 
Pourquoi est-ce qu'une fenêtre devrait s'ouvrir ? T'es sous 98 pour avoir une fenêtre DOS qui s'ouvre (pas de DOS sous 2K/XP) ?
 
Sinon si t'as des données à faire passer à ton programme, je ne suis pas certain que tu t'y prennes de la meilleure façon. Le mieux serait de pouvoir les passer en paramètre. Ce qui me paraît évident c'est que ton programme TCP_c.exe lit l'entrée standard et qu'il n'y a justement rien dans l'entrée standard, donc il ne fait rien. [:spamafote]

n°1108507
cachalot
Demarrer->Arreter :belle philo
Posté le 05-06-2005 à 02:11:56  profilanswer
 

en fait quand il se lance il doit demander l'adresse du serveur directe comme quand je le lance en ligne de commande donc ouvrir une fenetre dos no?

n°1108511
Profil sup​primé
Posté le 05-06-2005 à 02:30:51  answer
 

cachalot a écrit :

en fait quand il se lance il doit demander l'adresse du serveur directe comme quand je le lance en ligne de commande donc ouvrir une fenetre dos no?


 
Quand tu lances ton programme en ligne de commande, l'invité de commande se charge de passer ce que tu tapes dans l'entrée standard du programme. Si tu lances ton programme ailleur que dans un invité de commande, il lira toujours sur l'entrée standard, mais il faut savoir comment écrire dans ladite entrée standard. Une solution pourrait être de lancer l'invité de commande Windows ("command" ou "cmd" je crois) avec comme paramètre ton programme (il faut peut-être une option entre les deux, je te laisse chercher je suis pas sous Windows...) ce qui aurait pour effet de lancer ton programme dans une console. Tu dois même pouvoir ajouter une option pour que la console ne se ferme pas quand ton programme se termine.

n°1108512
cachalot
Demarrer->Arreter :belle philo
Posté le 05-06-2005 à 02:37:44  profilanswer
 

une petite question que je viens de voir  
lorsque le programme que je veux lancer possede une interface graphique il se lance
mais si je met  
String cmd= "cmd.exe";
par exemple rien ne se passe a noter que mon programme TCP_c.exe n'est pas en interface graphique est ce que ca peut venir de la?

mood
Publicité
Posté le 05-06-2005 à 02:37:44  profilanswer
 

n°1108513
Profil sup​primé
Posté le 05-06-2005 à 02:44:26  answer
 

J'abandonne, tu lis rien de ce que j'écris. Ou alors tu ne comprends rien, mais dans ce cas il faudrait expliquer ce que tu ne comprends pas...


Message édité par Profil supprimé le 05-06-2005 à 02:45:50
n°1108514
cachalot
Demarrer->Arreter :belle philo
Posté le 05-06-2005 à 02:50:32  profilanswer
 

sisi j'ai bien lu et tester des solutions que ta proposé mais rien ne marche dernier exemple en date trouvé en parallele sur le net  
String cmd = "CMD.EXE /C TCP_c.exe"; =>meme resultat donc rien  
 
g ensuite mis TCP_c.exe dans un batch
 
String cmd = "CMD.EXE /C LancementTCP_c.bat"; => meme resultat donc rien encore une fois

n°1109472
chicotruss
Posté le 06-06-2005 à 12:01:09  profilanswer
 

quand tu lances un programme console C/C++ depuis java il ne t'ouvre pas de fenetre, il fait tout en arriere plan donc si tu veux pouvoir communiquer avec ton programme C/C++ tu dois rediriger tes flots standards.
 
essaye de jongler avec java.lang.Process.get[Input|Output|Error]Stream() et java.lang.System.set[In|Out|Err](...), tu dois pouvoir trouver une solution


Aller à :
Ajouter une réponse
  FORUM HardWare.fr
  Programmation
  Java

  Execution d'un programme C dans du java

 

Sujets relatifs
lancer un autre programmeparamétrer ultraedit pour la compilation java
besoin d'un programme en C d'urgenceCherche prog qui réorganise proprement un programme
Intégration d'un applet java !!question sur le java
[Java] caster un int en BigDecimal ?[JAVA] Pb d'affichage...
[java] recuperer le nom d'une variable[Java 1.5] Encore du générique...
Plus de sujets relatifs à : Execution d'un programme C dans du java


Copyright © 1997-2022 Hardware.fr SARL (Signaler un contenu illicite / Données personnelles) / Groupe LDLC / Shop HFR