2012-04-03 11 views
4

Ich möchte die Kommunikation zwischen Racket-Programm und Python-Programm.Kommunikation zwischen Racket-Programm und Python-Programm

Mein Racket Code:

#lang racket 

(define-values (sp o i e) (subprocess #f #f #f "hello.exe")) 

(display "server" i) 

(flush-output i) 

(display (read o)) 

Mein Python-Code:

input_var = raw_input("Enter something: ") 

print ("you entered " + input_var) 

Wenn ich nur in Programm meines Pythons Druck bin es funktioniert gut. Wenn ich die Eingabe vom Racket-Programm lese, hängt es. Ich möchte Nachrichten aus dem Racket lesen.

+0

Wie versuchen Sie, ihre stdin und stdout zu verbinden? Wie laufen Sie diese Programme? – Marcin

Antwort

6

Es scheint, als ob es hängt, weil Sie keine neue Zeile (\ n) an den Ausgabeport ausgeben konnten. Hier ist, wie ich Ihren Code lautete:

#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)) 

... mit dem Code, den Sie in "/tmp/foo.py" geliefert, und ich sah die Ausgabe:

Enter something: you entered server 

... das ist was ich erwartet habe.

Der einzige interessante Unterschied hier ist, dass ich ein Newline-Zeichen an den Ausgang angehängt habe.

Beachten Sie auch, dass ich die Namen Ihres "o" und "i" vertauscht habe, weil ich nicht die Tatsache mochte, dass "o" ein Eingabeport war.

Verwandte Themen