Ich erstelle eine schnelle Brücke zwischen zwei separaten Programmen.Ist Java FileInputStream Sperrdatei zum Schreiben
Ein Programm schreibt in eine Datei, während mein Programm gleichzeitig davon liest.
Es scheint, dass, sobald ich den ersten Lesevorgang anrufe, das Schreiben vollständig blockiert ist.
Warum tritt dies auf und was ist die Problemumgehung?
// Create Named Pipe
Runtime.getRuntime.exec("mkfifo /tmp/mypipe")
val stream = new FileInputStream("/tmp/mypipe")
val in = new BufferedReader(new InputStreamReader(stream))
// File opened for reading. No blocking at this point.
while (true) {
println(in.readLine())
// File read. Now blocking.
}
Update:
Diese Datei ist eigentlich ein Named Pipe mit mkfifo /tmp/mypipe
erstellt. Ich versuchte es mit einem normalen File
und es funktionierte gut - alle Daten angezeigt.
Ich benutze eine Named Pipe, weil ich nicht die Festplatte IO Overhead will.
Können Sie das andere Programm auch zeigen? – Vlad
@Vlad ich habe keine Quelle und es ist nicht öffentlich. Alles was es tut, ist kein Lesen zu schreiben. Die While-Schleife und das Fehlen eines ordnungsgemäßen Schließens ist einfach. – BAR