I am trying to read continuously from a named pipe using java. This question answers it for python/bash.
public class PipeProducer {
    private BufferedReader pipeReader;
public PipeProducer(String namedPipe) throws IOException {
    this.pipeReader = new BufferedReader(new FileReader(new File(namedPipe)));
} 
public void process() {
    while ((msg = this.pipeReader.readLine()) != null) {
          //Process
    }
}
public static void main(String args[]) throws JSONException,IOException {
       PipeProducer p = new PipeProducer("/tmp/testpipe");
       while(true) {
            p.process();              
            System.out.println("Encountered EOF");
            now = new Date();
            System.out.println("End : " + now);
        }       
}       
Questions
- What happens if there is no data from pipe for some time ?
- Can Readerobject be reused whenEOFis encountered ?
- Is EOFis sent by pipe only when it terminate and not otherwise ?
- Does pipe guarantees to be alive and working unless something really goes wrong ?
Environment is CentOS 6.7 with Java 7
This is tested and works fine but corner cases needs to be handled so that continuous operation is ensured.
 
     
    