2012-04-03 24 views
4

ラケットプログラムとPythonプログラム間の通信が必要です。ラケットプログラムとPythonプログラムの間の通信

マイラケットコード:

#lang racket 

(define-values (sp o i e) (subprocess #f #f #f "hello.exe")) 

(display "server" i) 

(flush-output i) 

(display (read o)) 

私のpythonコード:

input_var = raw_input("Enter something: ") 

print ("you entered " + input_var) 

私はちょうど私のPythonプログラムで印刷していた場合、それは正常に動作します。私がラケットプログラムから入力を読み込んでいる場合、それはハングします。私はラケットからメッセージを読みたい。

+0

どのようにstdinとstdoutを接続しようとしていますか?どのようにこれらのプログラムを実行していますか? – Marcin

答えて

6

出力ポートに改行(\ n)を発行できなかったため、ハングアップしているようです。ここで私はあなたのコードを実行した方法は次のとおりです。

#lang racket 

(define-values (sp i o e) (subprocess #f #f #f 
             "/usr/bin/python" 
             "/tmp/foo.py")) 

(display "server\n" o) 

(flush-output o) 

(display (read-line i)) 

...あなたは「/tmp/foo.py」に供給され、私は出力を見たコードで:

Enter something: you entered server 

...です私が期待したもの。

ここで唯一の興味深い違いは、改行文字を出力に追加したことです。

"o"が入力ポートであるという事実が気に入らなかったので、私はあなたの "o"と "i"の名前を入れ替えました。