send -
在一個不同的應用的執行一個命令
send ?options?
app cmd ?
arg arg ...?
這個命令安排在叫做
app
的應用中執行
cmd (和
args)。它返回這個命令執行的結果或錯誤。
App
可以是其主視窗在容納傳送者的主視窗的顯示器上的任何應用的名字;不需要在同一個程序中。如果不存在
arg
引數,則要執行的這個命令完全的包含在
cmd
引數內。如果存在一個或多個
args,則把它們串聯起來形成要執行的命令,就象
eval 命令那樣。
如果這個命令的最初的引數開始於“-”,則把它們作為選項對待。當前定義了下列選項:
- -async
- 要求非同步呼叫。在這種情況下
send
命令將立即完成而不等待
cmd
在目標應用中完成;不能獲得任何結果並且忽略在傳送命令中的錯誤。如果目標應用與傳送的應用在同一個程序中則忽略
-async 選項。
-
-displayof pathName
- 指定目標應用的主視窗是在用
pathName
給出的視窗的顯示器上,而不是包含應用的主視窗的顯示器。
- --
- 除了終止選項的列表沒有其他用途。這個選擇只在
app
包含一個前導的“-”字元時需要。
用程式或建立這個應用的指令碼的名字來初始設定應用的名字。你可以用
tk appname
命令查詢和變更一個應用的名字
如果從應用中刪除了
send
命令(比如,使用了命令
rename send
{}),則這個應用不對到來的傳送請求做任何響應,也不能發起外出的請求。可以透過呼叫
tk appname
命令重新啟用通訊。
send
命令是一個潛在的嚴重的安全漏洞。在
Unix 上,可以連線到你的
X
伺服器的任何應用都可以向你的應用傳送指令碼。這些到來的指令碼可以使用
Tcl
來讀寫你的檔案和用你的名字呼叫子程序。
基於主機的訪問控制比如
xhost
特別不安全,因為它允許在特定主機上有一個帳戶的任何人連線到你的伺服器上,並且如果停用了它則允許任何人從任何地方連線到你的伺服器。為了提供少量的安全性,Tk
檢查伺服器使用的訪問控制,並且除非是
(a)啟用了
xhost式樣的訪問控制(就是說只有特定主機可以建立連線),和
(b)允許的主機的列表是空的,否則丟棄到來的傳送。這意味著除非應用使用了其他形式的授權(authorization)比如
xauth,否則不能連線到伺服器上。
在 Windows 上,目前禁用
send。它的多數功能由
dde 命令提供。
application, dde, name, remote execution, security, send
寒蟬退士
2002/05/28
http://cmpp.linuxforum.net
本頁面中文版由中文 man
手冊頁計劃提供。
中文 man 手冊頁計劃:
https://github.com/man-pages-zh/manpages-zh