2010-07-07 4 views
0

Je dois contrôler un programme en C++ (windows), je dois l'appeler, puis lui transmettre des données au fur et à mesure que je le recueille, enfin après une certaine commande ce programme utilisera ces données.Contrôler un programme shell via une ligne de commande, en lui donnant plusieurs instructions/données

J'ai besoin d'ouvrir le prog.exe, puis ligne par ligne ou valeur par valeur fournir des informations, cela fonctionne manuellement via cmd.

J'ai essayé system() mais cela s'arrêtera après avoir ouvert le programme.

J'ai besoin de quelque chose comme ça.

//call it 
prog.exe 
//add data 
DataStart 
Data 1 [2 34 454 5]//etc 
DataEnd //the program will take it from here. 

tout étant passé si la ligne de commande

+2

Il suffit de lire à partir de l'entrée standard. –

+0

Voulez-vous dire, 'prog.exe' lirait les données de l'entrée standard? Vous pensez probablement cela. – Amadan

+1

Pas tout à fait un doublon de http://stackoverflow.com/questions/450865/what-is-the-equivalent-to-posix-popen-in-win32-api mais les réponses devraient être utiles. – sarnold

Répondre

1

Il y a différentes façons dont vous pouvez le faire - si votre programme doit exécuter une partie du chemin à travers votre code avant d'obtenir les données en entrée, vous pouvez simplement utiliser entrée standard, et invite l'utilisateur à taper les données. Si vous souhaitez utiliser des valeurs variables pour l'entrée, mais vous les reconnaîtrez avant l'exécution, vous pouvez transmettre les informations comme arguments de ligne de commande, où vous effectuerez sur comme si

prog.exe 1 2 3 

et votre programme accède aux données via argv [i] où i correspond à chaque argument de la ligne de commande.

+0

désolé si j'ai mis cette réponse dans la mauvaise section. Je ne connais aucune des valeurs, donc je ne peux pas parser la ligne de commande. en appelant le programme, il commence dans le shell, il sera alors à l'exception des entrées de l'utilisateur comme variables le programme acceptant ces entrées n'est pas le mien je veux saisir ces variables, mais ensuite besoin d'être interrogé à chaque fois. J'ai besoin de stat le prog et de laisser l'accès pour que je puisse ajouter ces données comme il est frit. –

0

ont votre programme lu à partir de l'entrée standard, et de la ligne de commande « pipe » le résultat de l'autre programme à la vôtre

par exemple.

datagenerator.exe | prog.exe

en supposant que datagenerator.exe écrit sur la sortie standard, le | caractère redirigera la sortie vers l'entrée standard de prog.exe

Questions connexes