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

Re: wait asynchronous process



>> On Mon, 10 Nov 2003 21:06:58 +0900
>> 「大」== bg66@koka-in.org (OHASHI Akira) said as follows:

大> Meadow2 と OS X 上の Emacs (--with-carbon) で検証してみました。

ありがとうございます.

それにしても,この

大>                     file size
大>                     603        4397         12889    86327
大> Meadow2@Window2000
大>                     Success    Fail (0/20)  Success  Success (slow!)
大>                     Success    Fail (0/20)  Success  Success (slow!)
大>                     Success    Fail (0/20)  Success  Success (slow!)
大>                     Success    Fail (0/20)  Success  Success (slow!)

ファイルサイズ 4397 byte の結果は何と言うか,やる気を失わせる結果です
ね….

以下の検証用コードならどうでしょうか? 従来版と異なるのは,

    ・process-status で run だけでなく,stop も許すようにした
    ・最後に取りこぼしがないように,accept-process-output を余分に呼び
      出すようにした.

の2点です.

(let ((file "/etc/wgetrc")
      (times 20)
      (count 0)
      (success 0)
      (process-connection-type t))
  (while (<= (setq count (1+ count)) times)
    (with-temp-buffer
      (let ((proc (start-process "cat" (current-buffer) "cat" file)))
        (set-process-sentinel proc 'ignore)
        (while (or (accept-process-output proc 0 0)
                   (memq (process-status proc) '(run stop))))
        (while (accept-process-output proc 0 0))
        (if (= (buffer-size) (nth 7 (file-attributes file)))
            (setq success (1+ success))))))
  (if (= success times)
      (message "Success")
    (message "Fail (%d/%d)" success times)))

ただ,この方法は,XEmacs のように,process を指定した 
accept-process-output が期待通りに動いていない Emacsen では使えない終
了待ちの方法なんですよねえ.どうしたもんだか.

-- 
土屋 雅稔 ( TSUCHIYA Masatoshi )