Java:如何从inheritIO进程结束和退出

时间:2016-03-24 07:15:03

标签: java

我有一个类文件如下所示:

import java.util.*;
import java.io.*;


public class GnuPG {

    public GnuPG() {
    }


    public static void doDecrypt(String strInput, String strOutput, String pass) throws Exception {
        String[] cmd = { "cmd", "/c", "cd C:\\GnuPG\\ & gpg.exe --passphrase "+pass+" --output "+strOutput+" --decrypt "+strInput+" & echo exit! & exit(1)"};
        Process p = Runtime.getRuntime().exec(cmd);
        inheritIO(p.getInputStream(), System.out);
        inheritIO(p.getErrorStream(), System.err);
    }

    private static void inheritIO(final InputStream src, final PrintStream dest) {
        new Thread(new Runnable() {
            public void run() {
                Scanner sc = new Scanner(src);
                while (sc.hasNextLine()) {
                    dest.println(sc.nextLine());
                }
            }
        }).start();
    }    

}

运行GnuPG来解密gpg文件,我不知道当gpg.exe完成它的工作时停止进程的正确方法是什么。目前即时使用:

echo exit! & exit(1)

最后的cmd命令。这是否是一种杀死这个过程的正确方法?

0 个答案:

没有答案