Lassen Sie uns sagen, ich habe ein Python-Skript namens service.py als eine Art Dämon im Hintergrund ausgeführt wird, und ich möchte es durch Rohrleitungen Text in seine stdin einige Informationen geben:Rohr Text stdin Python Prozess der laufenden
> pgrep -f service.py
[pid of process]
> echo -e 'test\n' > /proc/[pid of process]/fd/0
Mein python-Skript sollte nehmen, was in seiner stdin und zuweisen auf eine Variable inp:
import sys
while True:
inp = sys.stdin.readline()
#do something with inp
Aber wenn ich die oben tun, er druckt nur den stdin-Stream:
> python service.py
test
Der Effekt ist der gleiche, wenn ich buchstäblich dies nur in meinem Skript
import sys
inp = sys.stdin.readline() #sys.stdin.readline() never returns
#script never exits
Was mache ich falsch?
Haben Sie versucht, Ihren Code zu debuggen, um zu sehen, ob 'inp' tatsächlich einem Wert zugewiesen wird? Problem könnte woanders im Code der 'while' Schleife sein. – Reaper
Nein, sys.stdin.readline() kehrt nie zurück, alles, was ich hinterher hinlege, wird niemals ausgeführt. – encomiastical
Mögliches Duplikat von [Wie schreibe ich Daten in den STDIN des vorhandenen Prozesses von einem externen Prozess?] (Http://stackoverflow.com/questions/5374255/how-to-write-data-to-existing-processs-stdin-from-external -process) – languitar