Bonjour,
Voila tout est dans le titre, j'aimerai que lorsque l'utilisateur appuie sur la touche space, cela quitte ma boucle while par exemple, ou que cela quitte mon programme.
J'ai essayé avec un getchar(); mais je ne vois pas trop comment m'y prendre.
Merci.
# Ncurses
Posté par Frédéric Lopez . Évalué à 3.
# pistes...
Posté par galatea842 . Évalué à 1.
ou dans une boucle:
[^] # Re: pistes...
Posté par pasBill pasGates . Évalué à 5.
Il y a possibilite d'utiliser la lib ncurses en specifiant un half-delay mais c'est un peu limite car il faut specifier un timeout en dixiemes de secondes, bref l'appel bloquera pendant au minimum 1 dixieme a chaque fois et dans une boucle c'est un ralentissement enorme, sinon il y a nodelay qui retourne tout de suite.
Une methode plus propre serait :
2 threads, un qui surveille le clavier pendant que l'autre fait le loop. Lorsque le thread qui surveille le clavier detecte un keypress, il signale l'autre thread(soit en envoyant un signal, soit en mettant une variable commune a une certaine valeur, variable qui est testee a plusieurs endroits dans le soft) qui des lors fait ce qu'il faut(cleanup & sortie).
De cette maniere le thread de calcul ne fait que ca, du calcul et n'a pas a se soucier d'entrees/sorties, et l'autre thread ne fait que gerer les entrees/sorties, je trouves cela plus "clean" comme methode. Si tu veux changer la methode pour stopper le soft(passer d'un key press a un packet recu sur un socket ou autre par exemple), t'as qu'a changer le code du thread de surveillance, pas besoin de toucher le code de calcul.
[^] # Re: pistes...
Posté par Ph Husson (site web personnel) . Évalué à 2.
Faut faire un fcntl pour passer en non bloquant
Et aussi faire un ioctl sur le tty pour dire de ne pas attendre le \n pour envoyer les données (mode canon et/ou echo je sais plus exactement)
Suivre le flux des commentaires
Note : les commentaires appartiennent à celles et ceux qui les ont postés. Nous n’en sommes pas responsables.