[Date Prev][Date Next][Thread Prev][][Date Index][Thread Index]

Re: wait asynchronous process



>> On Mon, 10 Nov 2003 12:38:41 +0900
>> 「山」== yamaoka@jpl.org (Katsumi Yamaoka) said as follows:

山> process-buffer の最後に "\nProcess cat finished" というものが入っ
山> て、サイズの照合に失敗する場合がありますね。

土> (set-process-sentinel proc 'ignore) しているので,そのメッセージは
土> 入らないはずなんですけど….多分,そのメッセージが入ってしまう 
土> Emacsen では,emacs-w3m ではまともなファイルのダウンロードはできな
土> いだろうと思います.

山> ひええい。

いやその,これはちょっと強く書きすぎました.正しくは,「まともなファイ
ルのダウンロードができることを保証できない」ですね.

非同期プロセスが終了するよりも早く sentinel function を設定できればい
いのですが,サンプルコードの

   (let* ((coding-system-for-read 'binary)
          (proc (start-process "cat" (current-buffer) "cat" file)))
     (set-process-sentinel proc 'ignore)

よりも早い段階で設定することは emacs lisp 的には不可能です.しかし,大
抵の場合はネットワークによる遅れが,emacs lisp の命令評価の1サイクルよ
りも大きいことが期待できますから,保証はできませんが,大抵の場合は大丈
夫ということになります.

逆に言えば,レスポンスの良いサーバーから極端に小さいファイルを,遅いコ
ンピュータで受け取る場合には危ない,ということです.

山> http://emacs-w3m.namazu.org/emacs-w3m-1.3.6.tar.gz は先の問題を起
山> こす XEmacs 21.4.14 でも正しいサイズで取れましたが、今後気をつけて
山> みます。

というわけで.これくらい大きいファイルは確実に大丈夫でしょう.

-- 
土屋 雅稔 ( TSUCHIYA Masatoshi )