我想要球拍程序和python程序之间的通信.
我的球拍代码:
#lang racket
(define-values (sp o i e) (subprocess #f #f #f "hello.exe" ))
(display "server" i)
(flush-output i)
(display (read o))
Run Code Online (Sandbox Code Playgroud)
我的python代码:
input_var = raw_input("Enter something: ")
print ("you entered " + input_var)
Run Code Online (Sandbox Code Playgroud)
如果我只是在我的python程序中打印它工作正常.如果我正在阅读球拍程序的输入,它会挂起.我想从球拍中读取消息.
它看起来像是挂起的,因为你没有向输出端口发出换行符(\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))
Run Code Online (Sandbox Code Playgroud)
...使用"/tmp/foo.py"中提供的代码,我看到了输出:
Enter something: you entered server
Run Code Online (Sandbox Code Playgroud)
......这是我的预期.
这里唯一有趣的区别是我在输出中添加了换行符.
另请注意,我交换了"o"和"i"的名称,因为我不喜欢"o"是输入端口的事实.