private void onProcess(final InputStream is, final OutputStream os) throws IOException {
		
		PrintUtil.verbose("#" + new Date() + " - Process Redirect Connection: " + BlucatState.execString);
		
		final Process p = Runtime.getRuntime().exec(BlucatState.execString);
		
		final OutputStream pos = p.getOutputStream();
		final InputStream pis = p.getInputStream();
		final InputStream err = p.getErrorStream();
		
		final ScheduledExecutorService exec = Executors.newSingleThreadScheduledExecutor();
		exec.scheduleAtFixedRate(new Runnable() {
			@Override
			public void run() {

				try {

					os.flush();
					pos.flush();
					os.write("".getBytes());
					PrintUtil.vverbose("#flushing\n");
					
				} catch (IOException e) {

					p.destroy();
					
					PrintUtil.verbose(e.getMessage());
					exec.shutdownNow();
				}

			}
		}, 0, 1, TimeUnit.SECONDS);
		
		
		new Thread(new Runnable() {
			@Override
			public void run() {
				try {

					IOUtils.copy(is, pos);
				} catch (IOException e) {

					PrintUtil.err.println("\n#Error: " + e.getMessage());
					if (BlucatState.vverbose)
						e.printStackTrace();
				}
			}
		}).start();
		
		new Thread(new Runnable() {
			@Override
			public void run() {
				try {

					IOUtils.copy(err, os);
				} catch (IOException e) {

					PrintUtil.err.println("\n#Error: " + e.getMessage());
					if (BlucatState.vverbose)
						e.printStackTrace();
				}
			}
		}).start();

		

		try {

			IOUtils.copy(pis, os);
		} catch (IOException e) {

			PrintUtil.err.println("\n#Error: " + e.getMessage());
			if (BlucatState.vverbose)
				e.printStackTrace();
		}

		
		p.destroy();
		exec.shutdownNow();
		
		if (BlucatState.vverbose){
			
			try{
				PrintUtil.vverbose("Process return value: " + p.exitValue() + "\n");
			}catch(Exception e){
				PrintUtil.vverbose("No process return value\n");
			}
		}	
	}