public void run() {
		try {
			//
			Process p = Runtime.getRuntime().exec(command, env, work);
			stdOut = new BufferedReader(new InputStreamReader(p.getInputStream()));
			stdErr = new BufferedReader(new InputStreamReader(p.getErrorStream()));
			//
			boolean goOn;
			do {
				goOn = false;
				if (stdOut.ready()) {
					String out = stdOut.readLine();
					if (out != null)
						results.add(out);
					goOn = true;
				}
				if (stdErr.ready()) {
					String err = stdErr.readLine();
					if (err != null)
						errors.add(err);
					goOn = true;
				}
				if (!goOn)
					try {
						Thread.sleep(250);
						exitCode = p.exitValue();
					} catch (IllegalThreadStateException ex) {
						goOn = true;
					} catch (InterruptedException ex) {
						//
					}
			} while (goOn);
			//
		} catch (Exception ex) {
			Logger.getLogger("shell").warning("Shell process failed : " + ex);
		}
	}