////// PipeProducer.java ////// import java.io.*; public class PipeProducer extends Thread { public PipeProducer(PipedWriter w) { out = w; } public void run() { try { produce(); out.close(); } catch(IOException e) { JavaSystem.error(e); } } private void produce() throws IOException { char[] c = new char[1]; BufferedReader rdr = new BufferedReader (new InputStreamReader(System.in)); while ( true ) if ( rdr.read(c,0,1) > 0 ) out.write(c,0,1); // write char to pipe else { out.flush(); return; } // no more char to write } private PipedWriter out; }