связь между ракетной программой и программой на питоне - PullRequest
4 голосов
/ 03 апреля 2012

Мне нужна связь между ракетной программой и программой на питоне.

Код моей ракетки:

#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, она работает нормально. Если я читаю ввод от ракетки, программа зависает. Я хочу читать сообщения от ракетки.

1 Ответ

6 голосов
/ 03 апреля 2012

Похоже, что он зависает, потому что вы не ввели новую строку (\ 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» был входным портом.

...