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

Re: start-process



From: TSUCHIYA Masatoshi <tsuchiya@pine.kuee.kyoto-u.ac.jp> さん曰く
Subject: [emacs-w3m:00432] Re: start-process
Message-ID: <mpa1yrak106.fsf@azalea.kuee.kyoto-u.ac.jp>
Date: 03 Apr 2001 14:26:01 +0900

白井> この秒数の差で問題が出るなら、sentinel を使った方が良いんじゃ無
白井> いでしょうか?

土> うーん。秒数の問題だけじゃないようなんですけど。例えば、私の環境では以
土> 下のようなコードは、無限ループしてしまいます。

土>     (with-temp-buffer
土>       (let* ((process-connection-type t)
土>              (proc (start-process "*w3m*"
土>                                   (current-buffer)
土>                                   "w3m" "-dump_source" "http://namazu.org/"))
土>              (w3m-process-running t))
土>         (set-process-sentinel proc
土>                               (lambda (proc event)
土>                                 (and (string-match "^\\(finished\\|exited\\)" event)
土>                                      (buffer-name (process-buffer proc))
土>                                      (save-excursion
土>                                        (set-buffer (process-buffer proc))
土>                                        (setq w3m-process-running nil)))))
土>         (while w3m-process-running
土>           (sleep-for 0.1))
土>         (process-exit-status proc)))

○ (while w3m-process-running (sleep-for 0.1))
 だと、w3m-process-running が nil か否かの判定の時間しか process
 の扱いに CPU が割り振られないと思う。(sit-for 0.1) なら動きます
 よ。
 というか sleep-for がどうしても必要な時以外は sit-for だと思う
 のだけど。(正しい認識かどうかは不明)
 
○ sentinel で最初に event string を見ているけど、違う終わり方を
 されるとダメだから、これはやめた方が。。。

○ local に束縛している w3m-process-running を sentinel な無名関
 数(って言うんだっけ?)で nil にして反映するのかな?と思ったのだ
 けど、実験の結果 OK だった。run-hooks と一緒なんだ。

ぐらいな感想でございます。
 
土> この場合は C-g 連打で抜けること自体はできるので、これまでに出てきた固
土> まってしまうコードよりはましですけど。

Emacs-21 だと固まった。

白井> # しかし、私の XEmacs だと process-connection-type を nil にしな
白井> # いと終りがわからない。。。

土> ああ、此の問題は私だけじゃなかったんですか。私も、XEmacs の場合は 
土> w3m-process-connection-type => nil にして使ってます。

初めて XEmacs を使ったときから、どうしてもこの辺りがうまく動かな
い。顕著な例は Mew + PGP/GPG です。

# 土屋さんもぼくも Solaris だからかな? 普段使わないから、気にす
# るのをやめてしまった。^^;;;

-- 
白井秀行 (mailto:shirai@rdmg.mgcs.mei.co.jp)