Java Kill 进程使用 ProcessBuilder 启动

标签 java unix process processbuilder

我正在这样运行我的流程:

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/

相关文章:

java - 如何在java opencv中找到最大的轮廓

linux - 从 ls 中提取子字符串

linux - 在 bash 中搜索多个目录

UNIX 中的 C : Reading/combining files based upon number of bytes

c# - 如何获得窗口的位置?

java - 即使 containsKey() 返回 true,从 HashMap 检索时也会出现空指针异常

java.sql.SQLException : Table 'CONNECTIONS' does not have an auto-generated column named 'connection_id'

multithreading - 基于 UDP 套接字的无速率文件传输

c - Fork() 和 Posix 队列。发送和接收字符串

java - 在 main 中调用方法时遇到问题吗?简单的客户端/服务器