cin asynchrone ? - C++ - Programmation
Marsh Posté le 20-04-2004 à 12:54:03
en tache de fond ? la console est monotache
en multithread tu devrais y arriver je pense
Marsh Posté le 20-04-2004 à 12:54:29
tourne ne toi vers ton système. y a des tas de bibliothèques C++ au dessus du C pour faire le travail. Sinon les threads, c'est vraiment mieux quand meme. cela dit je ne vois vraiment le besoin, un shell, c'est juste
lire l'entrée
executer l'action
afficher le résultat et on boucle.
Marsh Posté le 20-04-2004 à 12:58:48
mon problème est la en fait :
thread1 thread2
connexion
lis l'entrée erreur de socket
... veut fermer l'appli
...
a moins de killer le thread a la bourrin, je ne vois pas trop comment m'en sortir ... mais cette methode est sale.
Marsh Posté le 20-04-2004 à 13:23:43
une solution, sous *nix, est d'utiliser l'entrée standard comme une socket, ie en ajoutant le descripteur de fichier dans la liste utilisée pour faire le select. Par contre, je ne sais pas si cela fonctionne quand on utilise l'abstraction des stream C++ pour lire sur le flux (jamais essayé).
+a
Marsh Posté le 20-04-2004 à 13:23:52
celui qui lit les entrées, puisqu'il restera bloqué jusqu'à ce que l'utilisateur saisisse qqchose.
Marsh Posté le 20-04-2004 à 13:26:28
SoWhatIn22 > bonne idée, je vais essayer. J'aimerais produire du code portable win/*nix, je vois bien que ca va être dur.
Marsh Posté le 20-04-2004 à 12:46:34
Bonjour,
j'essaye de programmer un pseudo-telnet, et dans ce cadre, je dois gérer simultanement les entrées de l'utilisateur, et la connexion au serveur.
Mon problème se pose pour les entrées utilisateurs : en effet, les méthode istream que je connais sont bloquantes, et cela va donc bloquer la gestion des sockets (si je suis en monothread) ou l'eventuelle terminaison du programme suite a une erreur de sockets (si je suis en multithread).
Existe-t-il une méthode de cin permettant de laisser l'utilisateur taper du texte, en tache de fond, puis de venir régulièrement voir le contenu du buffer ?
J'ai vu qu'il était possible de rediriger le buffer avec rdbuf, je me demande si ce n'est pas la solution.
Quelqu'un a une idée ?
---------------
-( BlackGoddess )-