GUIをTcl/Tkに組み込んでいます。このGUIには、ディレクトリを作成するボタンがあります。 ディレクトリが非常に大きいので、待機中にGUIをロックしたくない場合があります。openとvwaitを使った別のプロセスのTarファイル
これを実現するには、コマンドパイプとvwaitにopenを使用していますが、tarが実行されている間はGUIが応答しなくなります。これは私のコードです:
set ::compress_result 0
set pipe [open "|$tar_executable -cf $folder_to_tar.tar $folder_to_tar" r+]
fileevent $pipe readable "set ::compress_result [gets $pipe line]"
vwait ::compress_result
set return_value $::compress_result
unset ::compress_result
close $pipe
なぜこれがまだTclのイベントループをブロックし、GUIをロックアップするのですか?パイプが役立つ開封後
fconfigure $pipe -blocking false
を追加
私が入門する前に、「r +」モードを使用する理由はありますか?私はここで 'r'を期待しています(デフォルトでは省略可能です)。 –
これは私がtcl wikiをコピーしたものです。ハハ。 – TheBat