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:
Ausführen:
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?
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?