プロセス間の通信が必要なプログラムを作成しています。ラケットのサブプロセス
私のコード:
#lang racket
(define-values (sp o i e) (subprocess #f #f #f "c://player1.exe"))
(define count 10)
(for ([c (in-naturals)])
(cond
[(equal? count 0) (error "Province is empty!") ]
[else
(write "server" i)
(set! count (sub1 count))
(flush-output i)
(display (read o))]))
とplayer1.exeコード:
#lang racket
(define (interact notification)
(cond
[(eq? notification "server") (write "true" (current-output-port))]
[else (write "false" (current-output-port))]))
(for ([c (in-naturals)])
(interact (read (current-input-port)))
(write "player" (current-output-port))
(sleep 0.1)
flush-output (current-output-port))
私は、ループなしで実行する場合、私は出力を取得しています。プレーヤーだけがメッセージを送信しているときにも出力が出ます。しかし、サーバーとプレーヤーの両方がメッセージを送信すると、プログラムはハングアップします。 問題は何と思いますか?
もう少し明確になるようにコードを再インデントしました。 – dyoo