new FileInputStream() blockiert bei fifo (named pipe)

Status
Nicht offen für weitere Antworten.

Wolfram

Mitglied
Ich versuche, einen Datenstrom in Linux aus einer Fifo zu lesen. Unglücklicherweise blockiert bereits new FileInputStream(), ich würde erwarten, das erst der read() auf dem so erhaltenen InputStream blockiert.

Programm:
Code:
import java.io.InputStream;

public class Main {

    public static void main(String[] args) {

        byte[] buffer = new byte[4096];

        java.io.FileInputStream f=null;
        try {
            f = new java.io.FileInputStream("/root/fifo");
        } catch (java.io.FileNotFoundException e) {
            System.out.println(e);
        }

        System.out.println("foo1");

        try {
            f.read(buffer);
        } catch (java.io.IOException e) {
            System.out.println(e);
        }
        System.out.println(buffer);
    }

}

Ausführen:
Code:
/root# mkfifo fifo
/root# java Main

das new FileInputStream() darf eigentlich nicht blockieren, aber das foo1 wird erst ausgegeben, wenn ich was in die fifo schreibe.

Hat jemand ne Idee? Einen eigenen InputStream hacken, der new erst aufruft, wenn das erste read() kommt oder so was?
 

Wolfram

Mitglied
Drumrumgehackt, einfach einen externen Prozess cat gestartet, cat geht anscheinend besser mit fifos um ;)

Code:
public class Main {

    public static void main(String[] args) {

        byte[] buffer = new byte[4096];

        java.lang.Process p = null;

        try {
            p=java.lang.Runtime.getRuntime().exec("cat /root/fifo");
        } catch (java.io.IOException e) {
            System.out.println(e);
        }

        java.io.InputStream f=p.getInputStream();

        System.out.println("foo1");

        try {
            f.read(buffer);
        } catch (java.io.IOException e) {
            System.out.println(e);
        }
        System.out.println(new String(buffer));

        p.destroy();
    }
}
 

HoaX

Top Contributor
Du Programmierst als Benutzer root? Pfui!

Ansonsten sei dir gesagt dass das Öffnen nur solange hängt bis jemand die Fifo zum Schreiben öffnet.
 
Status
Nicht offen für weitere Antworten.
Ähnliche Java Themen
  Titel Forum Antworten Datum
B OutputStream in FileInputStream? Java Basics - Anfänger-Themen 9
W Konstruktor von FileInputStream nicht gefunden Java Basics - Anfänger-Themen 18
B FileInputStream entpacken und Zeile für Zeile entpacken Java Basics - Anfänger-Themen 1
V FileInputStream - read() Java Basics - Anfänger-Themen 2
D String in FileInputStream umwandeln Java Basics - Anfänger-Themen 2
N FileInputstream und BinaryStream Java Basics - Anfänger-Themen 3
V FileInputStream auf ein swt.Image Java Basics - Anfänger-Themen 6
R FileInputStream findet Datei nicht Java Basics - Anfänger-Themen 5
C FileInputStream read() Overflow Problem Java Basics - Anfänger-Themen 6
C Datentypen Rückgabewert von "new FileInputStream" Java Basics - Anfänger-Themen 4
K FileInputStream in Jar Java Basics - Anfänger-Themen 5
megachucky FileInputStream findet nur absoluten Pfad, keinen Relativen ?! Java Basics - Anfänger-Themen 7
B FileInputStream schliessen: unreported Exception...must be caught Java Basics - Anfänger-Themen 6
G FileInputStream--> Zahlen aus Datei lesen Java Basics - Anfänger-Themen 7
G FileInputStream manipulieren Java Basics - Anfänger-Themen 6
B FileinputStream und BufferedInputStream Java Basics - Anfänger-Themen 12
P Fileinputstream to image? Java Basics - Anfänger-Themen 3
I FileInputStream global deklarieren Java Basics - Anfänger-Themen 2
G relativer Pfad bei FileInputStream Java Basics - Anfänger-Themen 11
T Unterschiedliche Werte beim FileInputStream Lesen Java Basics - Anfänger-Themen 2
F FileInputStream(File file) funzt net Java Basics - Anfänger-Themen 2
R FileInputStream.read() != FileReader.read(). Pls Help Java Basics - Anfänger-Themen 5
C FileInputStream sehr langsam Java Basics - Anfänger-Themen 5
Z FileInputStream bricht ab Java Basics - Anfänger-Themen 6
frau-u Probleme mit richtiger Verwendung von FileInputStream Java Basics - Anfänger-Themen 2
G FileInputStream Java Basics - Anfänger-Themen 6
W aus ObjectInputStream muß FileInputStream werden Java Basics - Anfänger-Themen 12
C FileInputStream und FileOutputStream Java Basics - Anfänger-Themen 4
J JAVA-Problem blockiert MEDIATHEKVIEW Java Basics - Anfänger-Themen 13
D Java Fenster blockiert ? Java Basics - Anfänger-Themen 5
J paint-methode blockiert settings von JComponents Java Basics - Anfänger-Themen 5
H Finalize Block blockiert Programmablauf Java Basics - Anfänger-Themen 15
U Inputstream.read()/readLine() blockiert immer Java Basics - Anfänger-Themen 18
N GUI wird durch while blockiert. ? Java Basics - Anfänger-Themen 8
hdi Thread blockiert -> warum? Java Basics - Anfänger-Themen 3
C FIFO Java Basics - Anfänger-Themen 7
U Threadsafe FIFO-Array Java Basics - Anfänger-Themen 12
Y Warteschlange (FIFO) Java Basics - Anfänger-Themen 5

Ähnliche Java Themen

Neue Themen


Oben