J'ai un problème, disons que j'ai une boucle continue, et à l'intérieur il y a une variable x qui est utilisée dans certains calculs. Comment envoyer une entrée du clavier à la boucle pour changer la variable x dans la boucle sans arrêter la boucle en C++? MerciComment envoyer une entrée dans une boucle continue? (C++)
Répondre
Si vous utilisez Linux, le mieux est d'utiliser ncurses. La bibliothèque S-lang est également utilisée par certains, mais je n'ai aucune expérience avec elle. Le multithreading n'est pas requis.
Mais qu'en est-il des signaux? Est-ce que je ne peux pas utiliser de signaux pour changer les variables dans une boucle déjà en cours? – chutsu
Bien sûr, vous pourriez probablement utiliser SIGALRM pour interroger le clavier, mais pourquoi ne pas simplement interroger le clavier depuis la boucle? – onemasse
Votre meilleur pari est probablement multi-threading, un deuxième thread pourrait attendre un clavier.
Jetez un oeil à boost/C++ pour les détails de mise en œuvre: http://www.boost.org/doc/libs/1_43_0/doc/html/thread.html
SI vous êtes sous Windows, vous pouvez utiliser GetAsyncKeyState
. (Voir: http://msdn.microsoft.com/en-us/library/ms646293(v=vs.85).aspx). Cependant, si vous n'êtes pas, cela ne fonctionnera pas (évidemment) :)
S'il s'agit d'un logiciel utilisateur, j'opterais pour l'approche multithread comme mentionné par smichaud. Si c'est un outil (et que la performance n'est pas un problème), vous pouvez lire continuellement un fichier et le modifier de l'extérieur, car c'est l'implémentation la plus simple.
Vous souhaitez une entrée au clavier non bloquante. Je pense que cela dépend beaucoup du système d'exploitation, vous devez donc spécifier quelle plate-forme vous utilisez. – onemasse
Pourriez-vous vérifier un tampon de clavier ou interrompre votre boucle? –
Je cours sous Linux – chutsu