javaから外部コマンドの起動がうまくいかない件その2

| トラックバック(0)

どうも。

やはりまだまだeclipseのプラグインにはまっているハシモトです。

先日記事を書きましたが若干検討違いがあったので再掲。

java.lang.ProcessImpl#start をみると分かるのですが、コマンド部分はそのまま文字列としてプロセスへ渡りますが、引数部分はバイナリになって渡っています。なのでワンライナーを忠実に定義するならsh(windowsならcmdかな)コマンドからワンライナー部分を引数にして渡す、という感じが正解っぽい。

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

public class Test {

    /**
     * @param args
     * @throws Exception
     */
    public static void main(String[] args) throws Exception {

        Runtime r = Runtime.getRuntime();
        Process p = r.exec(new String[]{"sh", "-c", "export PATH=/opt/local/bin/:$PATH>/dev/null; tree; ls"});

        InputStream in = null;
        if (p.waitFor() == 0) {
            in = p.getInputStream();
        } else {
            in = p.getErrorStream();
        }
        BufferedReader br = new BufferedReader(new InputStreamReader(in));
        String line = null;
        while ((line = br.readLine()) != null) {
            System.out.println(line);
        }
    }
}

ではでは。

カテゴリ

トラックバック(0)

このブログ記事を参照しているブログ一覧: javaから外部コマンドの起動がうまくいかない件その2

このブログ記事に対するトラックバックURL: http://blog.chrhsmt.com/mt-tb.cgi/483