34 lines
6.5 KiB
HTML
34 lines
6.5 KiB
HTML
|
<HTML><HEAD>
|
|||
|
<BASEFONT FACE="Times New Roman" SIZE="2" COLOR="#000000">
|
|||
|
</HEAD>
|
|||
|
<BODY>
|
|||
|
<div><H3><b>fileevent Commandes Internes Tcl</b></H3></div>
|
|||
|
<HR ALIGN="center">
|
|||
|
<div><b>NOM</b></div><br>
|
|||
|
<div ALIGN="LEFT" style="margin-left: 51px;">fileevent - Ex<45>cute un script quand un canal devient lisible ou inscriptible
|
|||
|
</div><br>
|
|||
|
<div><b>SYNTAXE</b></div><br>
|
|||
|
<div ALIGN="LEFT" style="margin-left: 51px;"><b>fileevent </b><i>channelId </i><b>readable </b>?<i>script</i>? <br>
|
|||
|
<b>fileevent </b><i>channelId </i><b>writable </b>?<i>script</i>
|
|||
|
</div><br>
|
|||
|
<div><b>DESCRIPTION</b></div><br>
|
|||
|
<div ALIGN="LEFT" style="margin-left: 51px;">Cette commande est utilis<69>e pour cr<63>er des <i>file event handlers</i> Un gestionnaire d'<27>v<EFBFBD>nement de fichier est une liaison entre un canal et un script, Ainsi le script est <20>valu<6C> chaque fois que le canal devient lisible ou inscriptible. Les gestionnaires d'<27>v<EFBFBD>nement de fichier sont plus couramment utilis<69>s pour autoriser les donn<6E>es <20> <20>tre re<72>ues d'un autre processus sur une base pilot<6F>e par <20>v<EFBFBD>nement, permettant au r<>cepteur de continuer <20> interagir avec l'utilisateur en attendant que les donn<6E>es arrivent. Si une application appelle <A HREF="118.htm"><b>gets</b></A> ou <A HREF="151.htm"><b>read</b></A> sur un canal bloquant quand il n'y a pas de donn<6E>es entrantes disponibles, le processus bloquera; jusqu'a ce que les donn<6E>es entrantes arrivent, il ne sera pas capable de prendre en charge d'autres <20>v<EFBFBD>nements, donc il apparaitra <20> l'utilisateur "gel<EFBFBD>" Avec <b>fileevent</b>, le processus peut savoir quand les donn<6E>es sont pr<70>sentes et appeller seulement <A HREF="118.htm"><b>gets</b></A> ou <A HREF="151.htm"><b>read</b></A> quand elles ne bloqueront pas. </div><br>
|
|||
|
<div ALIGN="LEFT" style="margin-left: 51px;">L'argument <i>channelId</i> <20> <b>fileevent</b> se ref<65>re <20> un canal ouvert, tel que la valeur de retour d'une pr<70>c<EFBFBD>dente commande <A HREF="142.htm"><b>open</b></A> ou <A HREF="162.htm"><b>socket</b></A>. Si l'argument <i>script</i> est sp<73>cifi<66>, alors <b>fileevent</b> cr<63>e un nouveau gestionnaire d'<27>v<EFBFBD>nement <i>script</i> qui sera <20>valu<6C> chaque fois que le canal devient lisible ou inscriptible (d<>pendant du second argument de <b>fileevent</b>). Dans ce cas <b>fileevent</b> retourne une cha<68>ne vide. Les gestionnaires d'<27>v<EFBFBD>nements <b>readable</b> et <b>writable</b> sont ind<6E>pendants, et peuvent <20>tre cr<63><72>s et effac<61>s s<>par<61>ment. N<>anmoins, il peut y avoir au plus un gestionnaire <b>readable</b> et <b>writable</b> pour un fichier <20>
|
|||
|
un instant donn<6E> dans un interpr<70>teur donn<6E>. Si <b>fileevent</b> est appel<65> quand le gestionnaire sp<73>cifi<66> existe d<>j<EFBFBD> dans l'interpr<70>teur d'appel, le nouveau script remplace l'ancien. </div><br>
|
|||
|
<div ALIGN="LEFT" style="margin-left: 51px;">Si l'argument <i>script</i> n'est pas sp<73>cifi<66>, <b>fileevent</b> retourne le script courant de <i>channelId</i>, ou une cha<68>ne vide s'il n'y en a aucun. Si l'argument <i>script</i> est sp<73>cifi<66> comme cha<68>ne vide alors le gestionnaire d'<27>v<EFBFBD>nement est effac<61>, ainsi aucun script ne sera appel<65>. Un gestionnaire d'<27>v<EFBFBD>nement de fichier est aussi effac<61> automatiquement chaque fois que son canal est ferm<72> ou son interpr<70>teur effac<61>. </div><br>
|
|||
|
<div ALIGN="LEFT" style="margin-left: 51px;">Un canal est consider<65> lisible si il y a des donn<6E>es non lues disponibles sur le p<>riph<70>rique sous-jacent. Un canal est aussi consider<65> lisible si il y a des donn<6E>es non lues dans un tampon d'entr<74>e, except<70> dans le cas sp<73>cial o<> la plus r<>cente tentative de lire <20> partir du canal comme un appel <20> <A HREF="118.htm"><b>gets</b></A> qui n'a pas pu trouver une ligne compl<70>te dans le tampon d'entr<74>e. Cette fonctionnalit<69> permet <20> un fichier d'<27>tre lu une ligne <20> la fois en mode non bloquant en utilisant les <20>v<EFBFBD>nements. Un canal est aussi consider<65> lisible si une fin de fichier ou une condition d'erreur est pr<70>sente sur le fichier ou le p<>riph<70>rique sous-jacent. Il est important pour le <i>script</i> de v<>rifier ces conditions et de les g<>rer opportun<75>ment par exemple, s'il n'y a pas de verification sp<73>ciale pour la fin du fichier, une boucle infinie peut se produire si le <i>script</i> ne lit pas de donn<6E>es, retourne, et est imm<6D>diatement appel<65> de nouveau. </div><br>
|
|||
|
<div ALIGN="LEFT" style="margin-left: 51px;">Un canal est consider<65> inscriptible si au moins un octet de donn<6E>es peut <20>tre <20>crit sur le fichier ou p<>riph<70>rique sous-jacent sans bloquer, ou si une condition d'erreur est pr<70>sente sur le fichier ou p<>riph<70>rique sous-jacent. </div>
|
|||
|
<div ALIGN="LEFT" style="margin-left: 51px;">Les I/O pilot<6F>es par <20>v<EFBFBD>nements fonctionnent mieux avec les canaux plac<61>s en mode non bloquant avec la commande<A HREF="109.htm"><b> fconfigure</b></A>. En mode bloquant, une commande <A HREF="148.htm"><b>puts</b></A> peut bloquer si vous lui donnez plus de donn<6E>es que le fichier ou p<>riph<70>rique sous-jacent peut accepter, et une commande <A HREF="118.htm"><b>gets</b></A> ou <A HREF="151.htm"><b>read</b></A> bloquera si vous tentez de lire plus de donn<6E>es que pr<70>tes aucun <20>v<EFBFBD>nement ne sera trait<69> pendant que les commandes bloquent. En mode non bloquant <A HREF="148.htm"><b>puts</b></A>, <A HREF="151.htm"><b>read</b></A>, et <A HREF="118.htm"><b>gets</b></A> ne bloquent jamais. Voir la documentation de ces commandes individuelles pour plus d'informations sur comment elles g<>rent les canaux bloquants et non bloquants. </div><br>
|
|||
|
<div ALIGN="LEFT" style="margin-left: 51px;">Le script pour un <20>v<EFBFBD>nement fichier est ex<65>cut<75> au niveau global (en dehors du contexte de quelconque fonction Tcl) dans l'interpr<70>teur dans lequel la commande <b>fileevent</b> a <20>t<EFBFBD> appel<65>e. Si une erreur se produit pendant l'ex<65>cution du script alors le m<>canisme <A HREF="90.htm"><b>bgerror</b></A> est utilis<69> pour rapporter l'erreur. De plus, le gestionnaire d'<27>v<EFBFBD>nement fichier est effac<61> si jamais il retourne une erreur, c'est fait de mani<6E>re <20> emp<6D>cher les boucles infinies dues aux gestionnaires bogu<67>s
|
|||
|
</div><br>
|
|||
|
<div><b>CREDITS</b></div><br>
|
|||
|
<div ALIGN="LEFT" style="margin-left: 51px;"><b>fileevent</b> est bas<61>e sur la commande <b>addinput</b> cr<63><72>e par Mark Diekhans
|
|||
|
</div><br>
|
|||
|
<div><b>VOIR EGALEMENT</b></div><br>
|
|||
|
<div ALIGN="LEFT" style="margin-left: 51px;"><A HREF="90.htm">bgerror</A>, <A HREF="109.htm">fconfigure</A>, <A HREF="118.htm">gets</A>, <A HREF="148.htm">puts</A>, <A HREF="151.htm">read</A> </div><br>
|
|||
|
<div>Derni<EFBFBD>re r<>vision: 7.5</div>
|
|||
|
<br>
|
|||
|
<br><div ALIGN="CENTER"><A HREF="index.htm"><b>Index</b></A> <A HREF="111.htm"><b>Pr<EFBFBD>c<EFBFBD>dent</b></A> <A HREF="113.htm"><b>Suivant</b></A>
|
|||
|
</div>
|
|||
|
</BODY></HTML>
|