send

Выполнить команду в другом приложении.
 
  • Синтаксис
  • Описание
  • Имена приложений
  • Блокировка посылаемых команд
  • Безопасность
  • СИНТАКСИС send ?параметры? прил кмд ?арг арг ...?ОПИСАНИЕ Обеспечивает выполнение команды, заданной параметром кмд (с аргументами, заданными параметрами арг), в приложении с именем прил. Возвращает результат выполненной команды или ошибку. Аргумент прил может задавать имя любого из приложений, главное окно которого расположено на том же дисплее, что и главное окно запрашивающего приложения; запрошенное приложение не обязано управляться тем же процессом. Если аргументы отсутствуют, то выполняемая команда полностью определяется аргументом кмд. Если присутсвует один или несколько аргументов, то они конкатенируются с кмд в точности так же, как и в команде eval.

    Если первые аргументы команды начинаются с дефиса -, то они интерепретируются как параметры. В настоящее время допустимы следующие параметры:

    -async

    Запрашивает асинхронный вызов. В этом случае выполнение команды send завершается немедленно, не дожидаясь завершения выполнения команды, заданной аргументом кмд, в приложении-адресате; результат выполнения посланной команды или возникающие при выполнении ошибки игнорируются. Если адресат управляется тем же процессом, что и посылающее приложение, то параметр -async игнорируется.-displayof имяПути Указывает на то, что главное окно приложения-адресата должно быть на том же дисплее, что и окно, заданное аргументом имяПути, а не на дисплее посылающего приложения.-- Единственная задача этого параметра завершить список параметров. Он используется только если значение аргумента прил может начинаться с дефиса -.
    ИМЕНА ПРИЛОЖЕНИЙ Первоначально имя приложения определяется именем программы или скрипта, его создающего. Имя приложения можно узнать и изменить с помощью команды appname Tk.БЛОКИРОВКА ПОСЫЛАЕМЫХ КОМАНД Если отменить в приложении команду send (например, выполнив команду rename send {}), то приложение перестанет реагировать на поступающие запросы send и само не сможет посылать запросы. Восстановить взаимодействие приложений можно, выполнив команду appname Tk.БЕЗОПАСНОСТЬ Команда send является потенциальным источником серьезных нарушений защиты, так как любое приложение, способное соединиться с Вашим X сервером, может посылать скрипты в Ваше приложение. С помощью Tcl присланные скрипты могут читать Ваши файлы и выполнять запись в них и запускать подпроцессы под Вашим именем. Особенно уязвимо управление доступом вида xhost, так как всякий пользователь, заведенный на головном компьютере, может связаться с Вашим сервером; если же это управление доступом отключить, то связь становится возможной вообще для любого пользователя, где бы он ни находился. Чтобы обеспечить хотя бы минимальную защиту, Tk проверяет систему управления доступом на сервере и отвергает все присланные команды, если либо (а) xhost-система управления доступом отключена (так что лишь некоторые головные компьютеры могут устанавливать связь); либо (б) список головных компьютеров, которым такая связь разрешена, пуст. В результате никакое приложение не сможет связаться с Вашим сервером, если у него не будет дополнительных прав (например, предоставленных xauth).