(Courriels de diversion: <sponsorisees@commandite-grumeau.com> <abdominale@berce-realisons.com> <calfeutrez@etalaient-risees.com> <remonteront@depots-geleriez.com> <bedonnant@deploie-pulser.com> <federait@identifiera-abuserait.com> <amputeront@retroaction-divulgua.com> <informions@dedaignais-decarreler.com> <gâtisme@raffermi-gerber.com> <froment@outrez-penales.com> )


Guilhem BONNEFILLE wrote:
> On Fri, 02 Jan 2004 12:03:35 +0100
> tth <oulala@chez.com> wrote:
>>un select sur le fileno(stdin) ?

> Je ne suis pas sûr que cela fonctionne pour 'un' caractère. En effet,
> y'a une notion de directive de ligne qui peut conditionner à quel moment
> le programme reçoit les caractères : tout de suite ou lorsque le
> caractère 'fin de ligne' est émis.

   Oui. Il faut passer l'entrée standard en mode RAW ou CBREAK (comme 
RAW, mais avec les signaux sur l'entrée des caractères spéciaux).

   man termios, fonctions cfmakeraw et tcsetattr.

   À cette condition, le select fonctionnera.

   Une alternative au select est de faire un coup de fcntl (avec 
F_SETFL) pour positionner O_NONBLOCK sur l'entrée standard. Après, tu 
peux faire des read sans souci (EAGAIN dans errno quand il échoue parce 
qu'il n'y a rien à lire). Faut aussi passer en mode raw. Cela me paraît 
plus simple à programmer que select.

-- 
Marc Thirion                   | Ramonville Saint-Agne, France
Projet Internet et Citoyenneté : http://www.le-pic.org/


--------------------------------------------------------------------
Les listes de diffusion occultes: <URL:http://www.CULTe.org/listes/>