2012-04-03 49 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 2012-04-03 07:39:33

回答

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」是輸入端口的事實。