Login | Register   
LinkedIn
Google+
Twitter
RSS Feed
Download our iPhone app
TODAY'S HEADLINES  |   ARTICLE ARCHIVE  |   FORUMS  |   TIP BANK
Browse DevX
Sign up for e-mail newsletters from DevX


Tip of the Day
Language: Java
Expertise: Advanced
Sep 13, 2004

Another Way to Execute a Process Without a Hang

This is in response to the tip Execute a Process Without a Hang. When I need to stdin, stdout and stderr at the same time, I use different threads to handle them. Here's the code:

    final Process p = Runtime.getRuntime().exec("/usr/bin/abc");
    Thread perr = new Thread() {
            public void run() { 
                    BufferedReader din = new BufferedReader(new InputStreamReader(p.getErrorStream())); 
                    String s; 
                    try { 
                            while ( (s = din.readLine()) != null ) { 
                                    System.err.println("err stream: "+s);
                            } 
                            din.close();
                    }  
                    catch (IOException e ) { } 
            }
    };

    final Writer jspOut = out;
    Thread pout = new Thread() {
            public void run() { 
                    BufferedReader din = new BufferedReader(new InputStreamReader(p.getInputStream())); 
                    String s; 
                    try { 
                            while ( (s = din.readLine()) != null ) { 
                                    jspOut.write(s);
                                    jspOut.write("<br>");
                                    jspOut.flush();
                            } 
                            din.close();
                    }  
                    catch (IOException e ) { } 
            }
    };
    perr.start();
    pout.start();

    final BufferedReader urlBR = new BufferedReader(new InputStreamReader(new URL(url).openStream()));
    final Writer pWriter = new BufferedWriter(new OutputStreamWriter(p.getOutputStream()));
    String line = "";
    while((line = urlBR.readLine()) != null) {
        pWriter.write(line);
        pWriter.write("\n");
        pWriter.flush();
    }
    urlBR.close();
    pWriter.close();
    p.waitFor();
Carfield Yim
 
Comment and Contribute

 

 

 

 

 


(Maximum characters: 1200). You have 1200 characters left.

 

 

Sitemap
Thanks for your registration, follow us on our social networks to keep up-to-date