Lesen / Schreiben zu Linux Pipe mit Java

8

Meine Frage ist, was ist der beste Weg, um eine Linux-Pipe in Java zu lesen / schreiben? Ich verwende bereits die java.io.RandomAccessFile wie

%Vor%

und übergibt es dann an den Worker-Thread, der es alle zwei ms als

liest %Vor%

Es liest es von Pipe, aber ich vermute, dass einige Bytes überschrieben werden. Wissen Sie, wie Linux (Ubuntu) den Puffer für Pipes behandelt?

    
amit.bhayani 27.10.2009, 16:32
quelle

3 Antworten

11

Ich habe das nie selbst versucht, aber was du tust, fühlt sich einfach falsch an. Linux-Pipes sind per Definition First-In-First-Out (FIFO). Daher sollten Sie Bytes nur in der Reihenfolge lesen können, in der Sie sie geschrieben haben - nicht zufällig. Ich würde vorschlagen, stattdessen ein normales File zu verwenden und es sollte gut funktionieren.

    
sfussenegger 27.10.2009 16:40
quelle
6

Pipes werden, soweit ich weiß, von Java nicht besonders behandelt. Sie öffnen einfach die Datei zum Schreiben und Schreiben.

Sie können nichts in einer Pipe wirklich "überschreiben", da Sie nicht in einer Pipe suchen können. Aus dem gleichen Grund ist ein RandomAccessFile nicht die klügste Wahl (da eine Pipe explizit nicht eine Direktzugriffsdatei ist). Ich würde vorschlagen, stattdessen ein FileOutputStream zu verwenden.

Beachten Sie auch, dass read() nicht garantiert gelesen wird, bis der Puffer voll ist! Es kann auch ein einzelnes Byte lesen und Sie müssen seinen Rückgabewert überprüfen und möglicherweise eine Schleife ausführen, um den vollen Puffer zu lesen.

    
Joachim Sauer 27.10.2009 16:42
quelle
0

Ich denke, Sie können nicht nach dem Schreiben zu flush, so OutputStream.flush () oft und lesen kann ein Byte zu der Zeit, zumindest um zu sehen, ob Ihre Daten durchkommen. z.B. Um mit dem Öffnen einer benannten Pipe im schreibgeschützten Modus (FileInputStream) in process1 zu beginnen, öffnen Sie sie im schreibmodus (FileOutputStream) in process2, sodass alles, was Sie in process2 schreiben, in process1 eingelesen wird.

lesen Sie auch

Ссылка
Ссылка Ссылка

    
Anurag Uniyal 27.10.2009 17:09
quelle

Tags und Links