读取Java进程输出时出现的问题

读取Java进程输出时出现的问题,java,processbuilder,Java,Processbuilder,我试图在Java代码中运行一个进程,并读取该进程的输出。问题是,当我运行该进程时,代码只是挂起 我尝试运行的命令是: RNAplex

我试图在Java代码中运行一个进程,并读取该进程的输出。问题是,当我运行该进程时,代码只是挂起

我尝试运行的命令是: RNAplex 其中query.fasta是包含我希望RNAplex处理的信息的文件

在终端中运行此命令时,我得到以下输出:

(((((((&))))。7,19:1,12(-3.30)i:18,j:1

(((()(((和)))()))((41。4,14:1,10(-14.30)i:13,j:1

此输出后,进程终止

我用于运行的代码如下所示:

    Process p = Runtime.getRuntime().exec("RNAplex < query.fasta");

    BufferedReader stdInput = new BufferedReader(new InputStreamReader(p.getInputStream()));

    p.waitFor();
    
    String msg;
    while ((msg = stdInput.readLine()) != null) {
        System.out.println(msg);
    }

什么意思是
不起作用
?你能描述一下是什么吗wrong@Jens很抱歉我承认这有点模棱两可。我已经改写了。问题是进程没有输出,我假设这是因为它没有终止。我知道它会启动,因为我可以看到进程正在运行。您必须使用
https://docs.oracle.com/javase/7/docs/api/java/lang/Process.html#getOutputStream()
以获取output@Jens我试试这个。奇怪的是,它是如何与自由命令一起工作的?我已经在question.mybe的底部添加了java控制台输出,因为free不从stdin读取任何内容
                total        used        free      shared  buff/cache      available
 Mem:            125          43          41           0          40          81
 Swap:           127           0         127