pipe probleme

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

Folgendes Problem stellt sich für mich da:

Ich Erstelle eine Pipe und schreibe rein:

Code: Alles auswählen

	pipeName = 'pipe_radiotap'
	try:
	        os.unlink(pipeName)
	except:
	        pass
	os.mkfifo(pipeName)
	open(pipeName,'w').write(str(parse(data)))
Das Problem ist das der Programm in einer schleife ist und eben viele sachen in die pipe schreiben soll, und ein anderes Programm holt diese raus.

Es funktioniert zwar, aber immer nur so das EIN eintrag in die Pipe gemacht wird und dann das Programm WARTET bis dieses entnommen wurde und DANN erst wieder was reinschreibt.

Frage: Gibt es eine Funktion die eben kein FIFO macht sondern in die pipe reinschreibt und nicht wartet?

Und es müsste darüber hinaus so eingerichtet sein das wenn etwas gelsen wird, immer das "hinterste" elemet gelesen wird und auch wieder entfernt wird nach dem lesen.
BlackJack

Der Name `mkfifo()` legt ja schon irgendwie nahe, dass so eine Pipe nach dem FIFO-Prinzip arbeitet. Und die blockiert halt wenn der Puffer voll ist. Du könntest mit Threads und einer Queue arbeiten. Ein "Sende"-Thread holt sich immer Daten aus der Queue und schreibt diese in die Pipe und der Hauptthread kann an die Queue Daten zum Versenden übergeben, ohne zu blockieren.
Antworten