TCL ソケット コマンドを使用して、2 つの TCL/Tk アプリケーション (A と B) の間で通信を行っています。どちらも GUI が関連付けられています。B 上のサーバーは、基本的に A からのコマンドを受け入れ、実行結果を返します。問題は、実行が完了するとすぐに B の GUI がハングすることです。2 つの GUI を独立して動作させる方法はありますか? 次のスクリプトを使用して、2 つのアプリケーション間の接続をセットアップしています。
次の TCL スクリプト client.tcl でアプリケーション A を開始します。
proc execute { cmd } {
set cid [socket localhost 9900]
puts $cid $cmd
while { [gets $cid line] >= 0 } {
puts $line
}
close $cid
}
set pid [exec B server.tcl &]
execute {puts HelloWorld}
ここで、server.tcl はアプリケーション B を介してサーバーをセットアップします。
proc server { cid addr port } {
set cmd [gets $cid]
catch $cmd result
puts $cid result
close $cid
}
socket -server server 9900
vwait forever
目標は、ユーザーが A の GUI で作業を続けている間、B の GUI をアクティブにすることです。これにより、ユーザーは必要に応じて 2 つの GUI を切り替えることができます。A と B はどちらも、同時に利用可能にする必要がある同じデータを操作するための異なる機能を提供します。