J'ai un programme C généré par un programme Java. Le programme C est à moi, tandis que le programme Java est un tiers. Le programme Java configure les choses de telle sorte qu'il communique avec mon programme via stdin/stdout.Communication stdin/stdout entre programme Java et programme C sous Windows 64 bits 7
Le système fonctionne correctement sous Windows XP 32 bits depuis des années. Je viens d'acheter une nouvelle machine avec Windows 7 64 bits. Lorsque j'ai lancé le programme Java (à partir d'une boîte «DOS»), mon programme a été lancé avec succès et mon programme a reçu une commande que mon programme a exécutée avec succès. Mais quand mon programme est retourné à sa boucle avec
inputchar = getc(stdin);
le getc (stdin) ne retourne jamais.
Un indice: Je ne sais presque rien sur Java et j'ai eu quelques difficultés à obtenir à courir en premier lieu. Il m'a semblé qu'après l'avoir installé depuis java.com, si je suis allé dans une boîte "dos" et que j'ai tapé "java", j'ai juste une erreur de commande non reconnue. J'ai alors trouvé un java.exe sur windows \ sysWOW64 donc j'ai tapé "windows \ sysWOW64 java -jar bla bla ..." et alors le programme a semblé qu'il fonctionnait (au moins jusqu'au problème de getc (stdin)).
Une idée de ce qui pourrait mal se passer? Ai-je besoin d'un Java 64-bit-Windows-7 spécial? Est-il possible que ce soit juste un programme java mal écrit dont les bugs ne se manifestent que lors de l'exécution sur un nouveau système d'exploitation? Ou est-ce plus susceptible d'être moi?
EDIT: Mon programme C fonctionne bien sur son propre (à savoir pas donné naissance à de Java) sur les fenêtres 64bit machine 7.
EDIT: Si je tape "\ windows \ SysWOW64 \ java -version", je reçois ...
java version "1.6.0_18"
Java(TM) SE Runtime Environment (build 1.6.0_18-b07)
Java HotSpot(TM) Client VM (build 16.0-b13, mixed mode, sharing)
EDIT: Sur la vieille boîte XP la version java était 1.6.0_17-b04
EDIT: Je n'ai pas reconstruit mon programme C pour la nouvelle machine. Je viens de copier l'ancienne version 32 bits.
EDIT: le premier caractère « commande » que le programme java envoie est une chaîne se terminant par un « saut de ligne » (ASCII 10).
C ou C++? Votre titre dit C++, mais partout ailleurs, il semble être C. –
C'est en fait un programme qui a été développé sur 25 ans en C, mais au cours des 6 derniers mois, il a été forcé de fonctionner en C++. Son 99,9%-C, d'où l'utilisation de code comme getc(). – Mick
Je sais quoi, je vais le marquer comme C et C++! – Mick