mori
jn3r-****@asahi*****
2003年 12月 25日 (木) 14:49:15 JST
初めまして。森といいます。 以下のプログラムを実行し、telnet localhost 40000 すると プログラムが応答しなくなり Control-C で終了しなくなってしまいます。 (use gauche.net) (use gauche.threads) (define sock (make-server-socket 'inet 40000 :reuse-addr? #t)) (define (main-loop) (let ((s (socket-accept sock))) (display "connect") (flush) (let ((thr (make-thread (lambda () (display "start") (flush) (let ((file (open-input-file "/file"))) (close-input-port file)) (socket-close s) (display "return") (flush))))) (thread-start! thr))) (main-loop)) ;;(close-input-port (open-input-file "/file")) (main-loop) 環境は Gauche-0.7.3 で FreeBSD 4.9-RELEASE です。Linux 2.4.18では動作しました。 (main-loop) の前のコメントアウトをはずすと上手くいくのですが、 while :; do telnet localhost 40000; done すると 数十回接続、切断を繰り返した後また同じように固まってしまいます。 どうしたらよいのでしょうか。