Le clavier et le C
Fermé
Pierre
-
17 mars 2004 à 16:12
Marden Messages postés 1072 Date d'inscription dimanche 11 février 2001 Statut Membre Dernière intervention 29 janvier 2006 - 27 avril 2004 à 17:28
Marden Messages postés 1072 Date d'inscription dimanche 11 février 2001 Statut Membre Dernière intervention 29 janvier 2006 - 27 avril 2004 à 17:28
A voir également:
- Le clavier et le C
- Telecharger clavier arabe تنزيل لوحة المفاتيح العربية - Télécharger - Divers Web & Internet
- Le clavier de mon telephone ne s'affiche plus - Guide
- Comment changer le clavier qwerty en azerty - Guide
- Télécharger clavier arabe samsung - Télécharger - Bureautique
- Comment taper / sur clavier - Guide
5 réponses
tafiscobar
Messages postés
1277
Date d'inscription
jeudi 7 décembre 2000
Statut
Contributeur
Dernière intervention
26 février 2009
177
17 mars 2004 à 16:17
17 mars 2004 à 16:17
3eme solution : les signaux, regarde du cote de posix.
tafiscobar "lou waye def bopame"
la nullite n'existe pas, l'ignorance oui, ah je suppose!!!
tafiscobar "lou waye def bopame"
la nullite n'existe pas, l'ignorance oui, ah je suppose!!!
Salut,
j'ai exactement le meme pb, et en tant que GRAND debutant, je ne comprends pas la reponse de tafiscobar...
Qq'un peu me montrer comment coder ca ?
j'ai exactement le meme pb, et en tant que GRAND debutant, je ne comprends pas la reponse de tafiscobar...
Qq'un peu me montrer comment coder ca ?
blurk
Messages postés
486
Date d'inscription
vendredi 16 avril 2004
Statut
Membre
Dernière intervention
15 mars 2009
160
22 avril 2004 à 12:06
22 avril 2004 à 12:06
salut,
Il faut trouver une librairie avec une fonction non bloquante
qui détecte si une touche a été frappée (et laquelle)
du genre if(kbhit () ){carac=getasc( );}
avec while (carac!='q') au lieu de while(1)
Je sais que ça existe, ça fait 3 lignes de codes mais malheureusement je ne sais plus où trouver ça
je crois qu'il y a un rapport avec la norme ansi (pour terminal)
mais je suis sûr que sous linux tu devrais pouvoir trouver.
bonne chance, bon courage
Il faut trouver une librairie avec une fonction non bloquante
qui détecte si une touche a été frappée (et laquelle)
du genre if(kbhit () ){carac=getasc( );}
avec while (carac!='q') au lieu de while(1)
Je sais que ça existe, ça fait 3 lignes de codes mais malheureusement je ne sais plus où trouver ça
je crois qu'il y a un rapport avec la norme ansi (pour terminal)
mais je suis sûr que sous linux tu devrais pouvoir trouver.
bonne chance, bon courage
Marden
Messages postés
1072
Date d'inscription
dimanche 11 février 2001
Statut
Membre
Dernière intervention
29 janvier 2006
208
27 avril 2004 à 12:30
27 avril 2004 à 12:30
La solution passe bien par l'emploi de la fonction"signal" (voir "man signal", pour avoir les détails).
Si l'on tape <Ctrl>+C, le signal est récupéré, et par défaut, le traitement est immédiatement abandonné, avec émision d'un "core". Il faut donc, avant la boucle, remplacer le traitement par défaut (voir SIG_DFL) par une fonction utilisateur positionnant un "flag" accessible du programme appelant (global). C'est ce "flag" que l'on teste dans la boucle pour effectuer une sortie propre de l'application.
Si l'on tape <Ctrl>+C, le signal est récupéré, et par défaut, le traitement est immédiatement abandonné, avec émision d'un "core". Il faut donc, avant la boucle, remplacer le traitement par défaut (voir SIG_DFL) par une fonction utilisateur positionnant un "flag" accessible du programme appelant (global). C'est ce "flag" que l'on teste dans la boucle pour effectuer une sortie propre de l'application.
Vous n’avez pas trouvé la réponse que vous recherchez ?
Posez votre question
Merci, ca a l'air d'etre effectivement la seule solution possible...
Le pb, c'est que je ne vois pas bien comment ca fonctionne concretement :( Je comprend bien le principe, mais l'aide n'est pas tres... limpide
Tu aurais un exemple ?
Le pb, c'est que je ne vois pas bien comment ca fonctionne concretement :( Je comprend bien le principe, mais l'aide n'est pas tres... limpide
Tu aurais un exemple ?
Marden
Messages postés
1072
Date d'inscription
dimanche 11 février 2001
Statut
Membre
Dernière intervention
29 janvier 2006
208
27 avril 2004 à 17:28
27 avril 2004 à 17:28
Désolé, je n'ai pas le détail de la mise en oeuvre dans mes archives. Je garantis que çà marche pour l'avoir utilisé ... il y a une dizaine d'années (j'ai, depuis, rendu mon tablier) dans au moins 2 cas :
* interruption d'édition de listes (des centaines de lignes défilant à l'écran) dans une appli en "conversationnel", et retour au mode "commande".
* interruption du calcul d'une réduction de matrice (méthode de Gauss) dont le calcul pouvait durer plusieurs heures. Le test était effectué à un niveau "logique" du traitement (fin de calcul d'une ligne/colonne), avec sauvegarde de la partie non calculée pour une reprise ultérieure.
Bien lire au préalable ce qui est dit sur "signal()" dans les manuels, je crois que çà y est bien expliqué. En quelques lignes de code.
* interruption d'édition de listes (des centaines de lignes défilant à l'écran) dans une appli en "conversationnel", et retour au mode "commande".
* interruption du calcul d'une réduction de matrice (méthode de Gauss) dont le calcul pouvait durer plusieurs heures. Le test était effectué à un niveau "logique" du traitement (fin de calcul d'une ligne/colonne), avec sauvegarde de la partie non calculée pour une reprise ultérieure.
Bien lire au préalable ce qui est dit sur "signal()" dans les manuels, je crois que çà y est bien expliqué. En quelques lignes de code.