2010-08-16 18 views
0

J'ai une petite application console C++ qui présente un menu puis effectue l'opération choisie.Activer la sortie de l'application console aux scripts

En outre, j'ai écrit un VBScript qui s'exécute sur le StdOut (réalisé par Exec) et entre dans StdIn les valeurs.

Cependant, lorsque j'essaie d'exécuter ce script, l'application console est bloquée dans l'appel scanf et le script ne reçoit rien de la sortie. _flushall() n'aide pas.

Quelqu'un a-t-il une idée?

Merci.

+0

Est-ce que VBScript peut même faire cela? Vous devrez au moins publier du code qui montre comment vous avez démarré le programme C++ et comment vous écrivez sur stdout. –

+0

Merci, Hans. Le code C++ consiste en un simple printf() (écrire sur stdout, dans le cas de l'application console, il va à l'écran) et scanf() (read from stdin) appels. –

+0

Êtes-vous sûr que le tuyau dans lequel vous écrivez est le stdin du script? Le code serait utile. –

Répondre

0

Ceci est très difficile à partir de VBScript/Windows Scripting Host, car il n'y a pas d'E/S non bloquantes. En d'autres termes, il n'y a aucun moyen de dire "Lisez tout ce qui est disponible maintenant, puis revenez immédiatement".

  • Si vous dites ReadLine, il va lire une ligne. S'il n'y a pas de ligne prête en ce moment, elle en attendra une.
  • Si vous dites ReadAll, il sera lu jusqu'à ce que le descripteur de fichier soit fermé, c'est-à-dire jusqu'à ce que le programme se termine. Il ne reviendra pas jusque-là.

Il est possible de le faire à partir du script, à condition de connaître EXACTEMENT quelle sortie le programme va créer dans chaque circonstance.

Dans la plupart des cas, il est préférable de configurer le programme dans un mode "batch" non interactif si possible, où le programme accepte les commandes mais sans avoir besoin de répondre aux invites.