kann keine pipe erstellen

Wenn du dir nicht sicher bist, in welchem der anderen Foren du die Frage stellen sollst, dann bist du hier im Forum für allgemeine Fragen sicher richtig.
Antworten
Tomek
User
Beiträge: 12
Registriert: Mittwoch 27. Februar 2008, 13:49

Ich will eine "named pipe" erstellen mit python und etwas reinschreiben. Das Problem ist das sich python aufhängt bzw. einfriert wenn ich das machen will.


als testcode habe ich mal einen code von http://my.opera.com/zomg/blog/2007/0...nd-named-pipes genommen:

Code: Alles auswählen

import os

# the name of the pipe
pipeName = 'testpipe'

# we will get an error if the pipe exists
# when creating a new one, so try removing it first
try:
 os.unlink(pipeName)
except:
 pass

# create the pipe and open it for reading
os.mkfifo(pipeName)
pipe = open(pipeName,'r')

# read forever and print anything written to the pipe
while True:
 data = pipe.readline()
 if data != '':
  print repr(data)


zum start gebe ich einfach "python pipe.py" ein und das Programm bleibt genau beim open befehl stehen und macht nichts mehr und lässt sich nur mit CTR-C beenden:

Code: Alles auswählen

$ python pipe.py 
Traceback (most recent call last):
  File "pipe.py", line 15, in <module>
    pipe = open(pipeName,'r') 
Zuletzt geändert von Tomek am Mittwoch 27. Februar 2008, 15:21, insgesamt 3-mal geändert.
Benutzeravatar
Hyperion
Moderator
Beiträge: 7478
Registriert: Freitag 4. August 2006, 14:56
Wohnort: Hamburg
Kontaktdaten:

Ja und? Genau das soll es doch auch! Du musst halt irgend etwas in die Pipe reinschreiben (lassen), damit etwas gelesen werden kann!

(Im übrigen bleibt das Programm weiter unten "stehen", in der Zeile mit readline() !)
BlackJack

Die in der Ausnahme angegebene Zeile gibt's im Quelltext gar nicht. Und man sollte den Quelltext auch richtig einrücken.
Tomek
User
Beiträge: 12
Registriert: Mittwoch 27. Februar 2008, 13:49

sorry habs jetzt oben korrigiert....

ok, danke erstmal. ist tatsächlich so das er auf eingabe wartet und nichts macht, wenn ich einfach per echo was eingebe gibt er mir das korrekt aus sofort. Verstehen tu ich das aber immernoch nicht ganz, da wenn ich nach dem open befehl z.b. ein print "test" eingebe er mir dieses nicht ausführt, also er hängt eben für ewig da drin, naja. Ich bin etwas neu in python und auch mit pipes habe ich nie gearbeitet.

Kann mir jemand nur noch bitte sagen wie ich es jetzt schaffe eine pipe zu erstellen, zu öffnen und dann etwas reinzuschreiben? Ich plage mich seit 12 uhr rum damit heute .. :)
Benutzeravatar
Hyperion
Moderator
Beiträge: 7478
Registriert: Freitag 4. August 2006, 14:56
Wohnort: Hamburg
Kontaktdaten:

Ohne es zu wissen tippe ich mal, dass man eine solche zum Schreiben öffnen muss und dann ganz normal mit den File-Methoden weiterarbeiten kann - so wie jetzt ja auch schon ;-)

Die Frage, die sich mir stellt: Wozu zum Geier willst Du das haben??? Ist doch für einen Neuling eher uninteressant ...
Tomek
User
Beiträge: 12
Registriert: Mittwoch 27. Februar 2008, 13:49

ich bin nur neu in python :)

ich hab 2 parallele programme laufen eines in C++ und eines in python. Das Python captured mit pcapy pakete vom WLAN und das C Programm soll diese aufnehmen und modifizieren und in eine datei schreiben, dazu haben sich auf den ersten Blick für mich Pipes am besten geeignet empfunden. Ich bin etwas eingerostet was meine Programmierkunst angeht aber so langsamm komm ich (gezwungenermaßen) rein und da mein Beteuer gerade verreist ist und mir nicht helfen kann such ich mir eben etwas Hilfe damit ich auch mal vorrankomm ;)
Antworten