Java Process.waitFor不等待

Java Process.waitFor不等待,java,process,Java,Process,我使用process.waitFor等待外部工具(CADD,一种计算生物学工具)在RHEL6.6下进行一些计算 String cmdStr = "CADD_v1.3/bin/score.sh input.vcf.gz output.vcf.gz" try { Process p; p = Runtime.getRuntime().exec(cmdStr); int exitVal = p.waitFor();

我使用process.waitFor等待外部工具(CADD,一种计算生物学工具)在RHEL6.6下进行一些计算

    String cmdStr = "CADD_v1.3/bin/score.sh input.vcf.gz output.vcf.gz"
    try {
        Process p;          
        p = Runtime.getRuntime().exec(cmdStr);
        int exitVal = p.waitFor();
        System.out.println("complete. Return value " + exitVal);
    } catch (Exception e) {
        e.printStackTrace();
    }

    return;
代码打印立即完成,无需等待。退出值为0。计算甚至不会结束(它是在创建output.vcf.gz后启动的,但输出文件始终为空)

cmdStr本身在终端中运行正常


欢迎提出建议。谢谢

阅读
输出/ErrorStream
s以查看命令生成的输出。考虑使用<代码> PrimeBuudioD>代码>,这将允许您通过<代码> OuttoStult重定向<代码> Error Stase<代码>,使其更易于管理。另外,您可能需要启动一个shell,在其中可以执行脚本。p.waitFor()的输出可能会提供一些线索,它应该是0。@svasa:是的,它返回0。看起来您的脚本score.sh正在将更新/填充输出文件的重要工作分配给子进程,并且它本身正在终止。如果脚本正在分叉一个新进程,而父进程正在终止,请查看脚本内部。@svasa:是,它已分配给子进程。我能强迫它等待吗?