(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/>