send

 

send - Execute une commande dans une application différente


SYNTAXE


 send ?options? app cmd ?arg arg ...?

DESCRIPTION


Cette commande prépare cmd (et args) a être exécutée dans l'application nommée app. Elle retourne le resultat ou l'erreur de cette execution. App peut être le nom de toute application dont la fenêtre principale est à l'écran contenant la fenêtre principale de l'appelant; elle n'a pas besoin d'être à l'intérieur du même process. Si aucun argument n'est présent, alors la commande a exécuter est contenue entièrement à l'intérieur de l'argument cmd. Si un ou plusieurs args sont présents, ils sont concaténés pour former la commande a exécuter, comme pour la commande eval.

Si les arguments initiaux de la commande commencent par un ``-'' ils sont traité comme des options. Les options suivantes sont actuellement définies:

-async Demande un appel asynchrone. Dans ce cas la commande send sera complétée immédiatement sans attendre que cmd soit terminée dans l'application cible; aucun resultat ne sera disponible et les erreurs dans la commande envoyée seront ignorées. Si l'application cible est dans le même process que l'application appelante alors l'option -async est ignorée.

-displayof pathName Spécifie que la fenêtre principale de l'application appelante est à l'écran de la fenêtre indiquée par pathName, à la place de l'écran contenant la fenêtre principale de l'application.

- - N'a d'autre usage que de terminer la liste des options. Cette option est seulement requise si app peut contenir un caractère ``-'' en tête.


NOMS DES APPLICATIONS


Le nom d'une application est initialisé à partir du nom du programme ou du script qui crée l'application. Vous pouvez lire et changer le nom d'une application avec la commande tk.


DESACTIVATION DES ENVOIS


Si la commande send est enlevée d'une application (ex. avec la commande rename send {}) alors l'application ne réagira plus aux appels de send entrants, ni ne sera capable d'emmettre des demandes. La communication peut être réactivée par l'appel de la commandetk.


SECURITE


La commande send est potentiellement une sérieuse faille de sécurité. Sous Unix, toute application pouvant se connecter à votre serveur X peut envoyer des scripts à vos applications. Ces scripts pourraient utiliser Tcl pour lire et écrire vos fichiers et appeler des sous-processus sous votre nom. Le contrôle d'accès basé sur les noms d'hôtes assuré par le fichier xhost est particulièrement peu sûr, car il permet à tous les comptes activés sur une machine particulière de se connecter à votre serveur, et s'il est désactivé au il permet au monde entier de se connecter à votre serveur. De manière à fournir une sécurité minimum, Tk vérifie le contrôle d'accès utilisé par le serveur et rejette les sends entrants à moins que(a) un contrôle d'accès xhost-style soit activé (c.a.d. seulement certaines machines peuvent se connecter) et (b) la liste des machines autorisées soit vide. Ceci signifie que les applications ne peuvent pas se connecter à votre serveur à moins qu'elles utilisent une autre forme d'autorisation comme celle fournie par xauth. Sous Windows, send est actuellement désactivée. Ses fonctionnalités sont fournies par la commande dde.


Rainbow-Six: Je me permet de rajouter une petite précision. Avec MacOS, les communications entre applications sont effectuées grâce aux Apple Events. Deux librairies sont disponibles dans la distribution pour Macintoch : TclAppleScript & tclAE.