Table des matières

puts

Écrit dans un canal

Syntaxe

puts ?-nonewline? ?channelId? string

Description

Écrit 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 défaut de stdout. puts émet normalement un caractère newline après string, mais cette fonctionnalité peut être supprimé en spécifiant 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; sur Macintosh les sauts de lignes sont normalement remplacé avec carriage-return).

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

Quand le tampon de sortie est plein, la commande puts bloquera normalement jusqu’à 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 non bloquantes doivent normalement être utilisées d'une façon pilotée par événement avec la commande fileevent (n’appelez pas puts à moins que vous ayez récemment notifié via un événement fichier que le canal est prêt à afficher plus de données).

Exemples

Voir aussi