我有一个类文件如下所示:
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命令。这是否是一种杀死这个过程的正确方法?