2010-04-07 4 views
1

J'essaye d'écrire un programme C++ sous Linux qui communique avec un moteur d'échecs via son interface de ligne de commande. Les moteurs d'échecs ont des protocoles standard comme UCI donc, si je pouvais écrire cela, je pourrais utiliser différents moteurs d'échec de façon interchangeable.Comment communiquer avec un processus indépendant en utilisant son interface de ligne de commande?

Mon programme C++ devrait lancer le moteur d'échecs, lui envoyer une commande, obtenir la sortie, lui envoyer une commande, obtenir la sortie, etc ... Comment cela se fait-il?

+0

Cela se fait généralement avec des tuyaux. Utilisez-vous une saveur ou des fenêtres UNIX? –

Répondre

1

Vous devez configurer certains tuyaux à partir de l'entrée standard et de la sortie standard. Par défaut, la sortie standard d'un programme est écrite sur le terminal et la sortie standard est lue depuis le terminal. Essentiellement, ce que vous ferez est de les rediriger du terminal à votre programme.

Vous pouvez fork, configurer les tuyaux, puis lancer les échecs avec execve() de votre processus fils. Ce site a un exemple simple de la façon de tuyaux standard à partir de votre programme principal à la norme dans un processus enfant:

http://www.cim.mcgill.ca/~franco/OpSys-304-427/messages/node92.html

+0

Voici quelques exemples d'appels de fonctions que j'ai fini par utiliser: pipe (pipein), dup2 (pipein [1], fileno (stdout)), close (pipein [0]), execl ("/ usr/jeux/fruit", "/usr/jeux/fruit ", (char *) 0), lire (pipein [0], buf, BSIZE), écrire (pipeout [1]," ucinewgame \ n ", 11). – jedavis

Questions connexes