====== 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 [[:tcl:open]] ou [[:tcl: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 [[:tcl: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 ===== {{tag>tcl}}