我希望在racket程序和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 :(得分: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"是一个输入端口。