Twitter iPhone pliant OnePlus 11 PS5 Disney+ Orange Livebox Windows 11

pardonnez ma question candide

7 réponses
Avatar
philippe
bonjour

pardonnez ma question candide

je recherche comment faire en langage C sous debian
>une boucle while (ca pas de probleme:-)
>avec une saisie au clavier a la volee sans attendre de validation

j'ai bien ecrit des modules avec getchar(), scanf
mais sans succes

merci d'avance
philippe

7 réponses

Avatar
R12y
philippe :

je recherche comment faire en langage C sous debian


est-ce que tu y arrive sous un autre système d'exploitation?
comment t'y prends-tu?

--
Debian/apt Repo: http://locataire-serveur.info/sections/liens/debian-repository
Fedora/yum Repo: http://locataire-serveur.info/sections/liens/fedora-core-yum

Avatar
Stephane Chazelas
2006-02-20, 12:03(+01), philippe:
pardonnez ma question candide

je recherche comment faire en langage C sous debian
une boucle while (ca pas de probleme:-)
avec une saisie au clavier a la volee sans attendre de validation


j'ai bien ecrit des modules avec getchar(), scanf
mais sans succes
[...]


Le fait est que le terminal n'envoie les caracteres tapes a
l'application qui lit le terminal que quand on tape entree, dans
le mode par defaut. On peut alors utiliser <Backspace>, <Ctrl-U>
sur ce /buffer/ que maintient le terminal avant que le buffer,
la ligne soit envoyee d'un coup a l'application.

Si on veut que tout caractere tapé soit disponible immediatement
pour l'application (mais ca veut dire que c'est a l'application
de gerer les <Backspace>...), alors il faut mettre le terminal
dans le mode qui va bien.

En C, c'est tcsetattr(), utiliser isatty() pour ne faire ce
changement de mode que si l'entree standard est un terminal. Ne
pas oublier de restaurer le mode precedent en sortant.

Des bibliotheques comme ncurses te donne une couche
d'abstraction. Ca pourra t'interesser.

Voir man termios, tcsetattr, isatty, stty et surtout:

info -f libc -n 'Terminal Modes'

(sur un systeme GNU).

--
Stéphane


Avatar
philippe
Stephane Chazelas wrote:
2006-02-20, 12:03(+01), philippe:

pardonnez ma question candide

je recherche comment faire en langage C sous debian

une boucle while (ca pas de probleme:-)
avec une saisie au clavier a la volee sans attendre de validation


j'ai bien ecrit des modules avec getchar(), scanf
mais sans succes


[...]

Le fait est que le terminal n'envoie les caracteres tapes a
l'application qui lit le terminal que quand on tape entree, dans
le mode par defaut. On peut alors utiliser <Backspace>, <Ctrl-U>
sur ce /buffer/ que maintient le terminal avant que le buffer,
la ligne soit envoyee d'un coup a l'application.

Si on veut que tout caractere tapé soit disponible immediatement
pour l'application (mais ca veut dire que c'est a l'application
de gerer les <Backspace>...), alors il faut mettre le terminal
dans le mode qui va bien.

En C, c'est tcsetattr(), utiliser isatty() pour ne faire ce
changement de mode que si l'entree standard est un terminal. Ne
pas oublier de restaurer le mode precedent en sortant.

Des bibliotheques comme ncurses te donne une couche
d'abstraction. Ca pourra t'interesser.

Voir man termios, tcsetattr, isatty, stty et surtout:

info -f libc -n 'Terminal Modes'

(sur un systeme GNU).



merci pour vos reponses

c'est pourtant vrai qi ya ncurses

je me penche de ce cote

philippe



Avatar
Thomas Baruchel
avec une saisie au clavier a la volee sans attendre de validation



Tu trouveras des informations assez explicites dans le manuel de la glibc.
Je te conseille de taper sur Google :
"c library" "low level terminal interface"
puis de lire l'ensemble, en te concentrant sur la section intitulée :
"Two Styles of Input: Canonical or Not"

Cordialement,

--
Thomas Baruchel


Avatar
Thomas Baruchel
Tu trouveras des informations assez explicites dans le manuel de la glibc.


Et j'ajoute ceci à ma réponse précédente : quand on commence à se
préoccuper de ce genre de choses, il n'est pas mauvais de s'intéresser
à des bibliothèques plus spécifiquement dédiées à la manipulation du
terminal, comme ncurses, qui permet de faire proprement ce genre de choses.
Si ton seul problème concerne la saisie de caractères, tu peux sans
doute t'en tenir à la glibc comme mentionné dans ma réponse précédente,
si tu t'occupes aussi d'avoir un affichage plus ou moins sophistiqué,
etc. Je te conseille vraiment d'utiliser cette bibliothèque généralement
installée sur tout bon système.

Cordialement,

--
Thomas Baruchel

Avatar
Harpo
philippe wrote:


c'est pourtant vrai qi ya ncurses

je me penche de ce cote


met le clavier en mode 'raw' sous ncurses.

Avatar
Thierry Boudet
On 2006-02-20, Thomas Baruchel wrote:

etc. Je te conseille vraiment d'utiliser cette bibliothèque généralement
installée sur tout bon système.

/ME rajoute: http://www.tldp.org/HOWTO/NCURSES-Programming-HOWTO/




--
Quelqu'un sait si un opérateur mobile en France fait des offres internet
illimité sur le mobile ? je veux juste que mon téléphone aient une IP.
compose le 127.0.0.1. Si ça sonne, c'est bon...

--{ professeur M. expert téléconn*ri*s }--