Puts

From Base de connaissances eggdrops & TCL
Jump to: navigation, search

puts - Ecrit dans un canal

Syntaxe

puts ?-nonewline? ?channelId? string

Description

Ecrit les caractères donnés par string dans le canal donné par channelId. ChannelId doit être un identificateur de canal tel que celui renvoyé par un précédent appel de open ou socket. Il doit avoir été ouvert pour une sortie. Si aucun channelId n'est spécifié alors il est par defaut de stdout. Puts émet normalement un caractère newline après string, mais cette fonctionnalité peut être supprimé en specifiant le switch - nonewline.

Les caractères newline dans la sortie sont traduits par puts en séquences fin de ligne spécifique à la plate-forme en accord avec la valeur courante de l'option -translation pour le canal (par exemple, sur les PCs les saut de lignes sont normalement remplacé avec carriage-return-linefeed séquences.

Tcl met la sortie en tampon en interne, donc les caractères écrits avec puts peuvent ne pas apparaitre immédiatement sur le fichier ou périphérique de sortie; Tcl retarde normalement la sortie jusqu'a ce que le tampon soit plein ou le canal fermé. Vous pouvez forcer la sortie à apparaitre immédiatement avec la commande flush.

Quand le tampon de sortie est plein, la commande puts bloquera normalement jusqu'a ce que toutes les données en tampon aient été acceptées pour sortie par le système d'exploitation. Si channelId est en mode non bloquant alors la commande puts ne bloquera pas même si le système d'exploitation ne peut pas accepter les données. Par contre, Tcl continue à mettre les données en tampon et les écrit en arrière-plan aussi vite que le sous-jacent fichier ou périphérique peut les accepter. L'application doit utiliser la boucle d'évènement Tcl pour que la sortie non bloquante fonctionne; autrement Tcl ne voit jamais que le fichier ou le périphérique est prèt à sortir plus de données. Il est possible pour une arbitrairement large quantité de données d'être en tampon pour un canal en mode non bloquant, ce qui peut consommer une large quantité de mémoire. Pour éviter de gaspiller la mémoire, les I/O nonbloquantes doivent normalement être utilisées d'une façon pilotée par évènement avec la commande fileevent (n'appellez pas puts à moins que vous ayez recemment notifié via un évènement fichier que le canal est prêt à afficher plus de données).

Voir également

open, exec, flush, gets, read, eof, close, socket, seek, tell, fconfigure, fblocked, fcopy, Utilisation des fichiers