view src/msgpack/test/ForkTestMsgPack.java @ 0:d86770305c8b draft

add TestJava
author Nobuyasu Oshiro <dimolto@cr.ie.u-ryukyu.ac.jp>
date Fri, 11 May 2012 02:30:59 +0900
parents
children 830afc6475b0
line wrap: on
line source

package msgpack.test;

import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStream;
import java.io.InputStreamReader;

public class ForkTestMsgPack {

	private static InputStream in = null;
	private static InputStream ein = null;
	static BufferedReader ebr = null;
	static BufferedReader br = null;

	public static void main(String[] args) {
		String[] cmd = { "/usr/bin/java","Hello"};
		Runtime run = Runtime.getRuntime();
		try {
			Process p = run.exec(cmd);
			in = p.getInputStream();
			ein = p.getErrorStream();

			Runnable inputStreamThread = new Runnable() {
				public void run() {
					String line;
					try {
						System.out.println("Thread stdRun start");
						br = new BufferedReader(new InputStreamReader(in));
						while ((line = br.readLine()) != null) {
							System.out.println(line);
						}
						System.out.println("Thread stdRun end");
					} catch (Exception e) {
						e.printStackTrace();
					}
				}

			};

			Runnable errStreamThread = new Runnable() {
				public void run() {
					try {
						System.out.println("Thread errRun start");
						ebr = new BufferedReader(new InputStreamReader(ein));
						String errLine;
						while ((errLine = ebr.readLine()) != null) {
							System.out.println(errLine);
						}
					} catch (Exception e) {
						e.printStackTrace();
					}
				}

			};

			Thread stdRun = new Thread(inputStreamThread);
			Thread errRun = new Thread(errStreamThread);
			stdRun.start();
			errRun.start();

			int c = p.waitFor();

			stdRun.join();
			errRun.join();

		} catch (IOException e) {
			e.printStackTrace();
		} catch (InterruptedException e) {
			e.printStackTrace();
		} finally {
			try {
				in.close();
				ein.close();
			} catch (IOException e) {
				e.printStackTrace();
			}
		}

	}

}