import java.io.BufferedInputStream; import java.io.BufferedOutputStream; import java.io.IOException; import java.io.InputStream; import java.io.OutputStream; class Forwarder implements Runnable { InputStream in; OutputStream out; public Forwarder(InputStream in, OutputStream out) { this.in = (in); this.out = (out); } @Override public void run() { // TODO Auto-generated method stub int input = 0; try { while ((input = in.read()) != -1) { //System.out.println(Thread.currentThread().getId() + " Read " + input); out.write(input); out.flush(); } } catch (IOException e) { // TODO Auto-generated catch block e.printStackTrace(); } } } public class GDBWrapper { /** * @param args */ public static void main(String[] args) { // TODO Auto-generated method stub try { System.out.println("Yello"); Process p = Runtime.getRuntime().exec("gdb"); InputStream gdbInputStream = p.getInputStream(); InputStream gdbErrorStream = p.getErrorStream(); OutputStream gdbOutputStream = p.getOutputStream(); Thread stdinToGDB = new Thread(new Forwarder(System.in, gdbOutputStream)); Thread gdbOutToOut = new Thread(new Forwarder(gdbInputStream,System.out)); Thread gdbErrToErr = new Thread(new Forwarder(gdbErrorStream, System.err)); stdinToGDB.start(); gdbOutToOut.start(); gdbErrToErr.start(); } catch(Exception e) { e.printStackTrace(); } } }