我正在这样运行我的流程:
builder = new ProcessBuilder("/bin/bash", "-c", "./MessageGenerator | ./SimpleEchoServer");
process = builder.start();
然后 process.destroy() 或 forcouslyDestroy() 不起作用。是因为我用的是管道吗?我怎样才能杀死这些进程?
最佳答案
您还应该拆分管道命令。我写了一个小例子:
package com.company;
import java.io.*;
public class Main {
public static void main(String[] args) throws IOException, InterruptedException {
ProcessBuilder processBuilder;
String line;
processBuilder = new ProcessBuilder("/bin/bash", "-c", "ls -l", "|", "grep java");
Process process = processBuilder.start();
BufferedReader reader = new BufferedReader(new InputStreamReader(process.getInputStream()));
while ((line = reader.readLine()) != null) {
System.out.println ("Stdout: " + line);
}
Thread.sleep(10000);
process.destroy();
}
}
关于Java Kill 进程使用 ProcessBuilder 启动,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39328794/