Racket程序与Python程序之间的通信

4
我想要 racket 程序和 python 程序之间的通信。
我的 Racket 代码:
#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程序中只是打印输出,那么它可以正常工作。但如果我从Racket程序中读取输入,则会挂起。我想要从Racket读取消息。

你是如何尝试连接他们的标准输入输出?你是如何运行这些程序的? - Marcin
1个回答

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”和“i”的名称,因为我不喜欢“o”是输入端口的事实。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接