javascript

java

python

c#

android

node.js

reactjs

c++

php

html

jquery

css

git

.net

ios

ruby-on-rails

sql

c

string

ruby

java-如何将Process Builder的输出重定向到字符串?

我正在使用以下代码来启动流程构建器。我想知道如何将其输出重定向到字符串。

ProcessBuilder pb = new ProcessBuilder(System.getProperty("user.dir")+"/src/generate_list.sh", filename);
Process p = pb.start();

我尝试使用ByteArrayOutputStream,但似乎没有用。

trans by 2019-11-08T14:52:45Z

java - ProcessBuilder:转发已启动进程的stdout和stderr而不阻塞主线程

我正在使用ProcessBuilder在Java中构建一个进程,如下所示:

ProcessBuilder pb = new ProcessBuilder()
        .command("somecommand", "arg1", "arg2")
        .redirectErrorStream(true);
Process p = pb.start();

InputStream stdOut = p.getInputStream();

现在我的问题如下:我想捕获通过该进程的stdout和/或stderr的任何内容并异步重定向到System.out。 我希望进程及其输出重定向在后台运行。 到目前为止,我发现这样做的唯一方法是手动生成一个新的线程,该线程将从stdOut连续读取,然后调用适当的write()方法System.out

new Thread(new Runnable(){
    public void run(){
        byte[] buffer = new byte[8192];
        int len = -1;
        while((len = stdOut.read(buffer)) > 0){
            System.out.write(buffer, 0, len);
        }
    }
}).start();

虽然这种方法很有效,但感觉有点脏。 最重要的是,它为我提供了一个正确管理和终止的线程。 有没有更好的方法来做到这一点?

trans by 2019-09-17T05:52:56Z

java - ProcessBuilder:转发已启动进程的stdout和stderr而不阻塞主线程

我正在使用ProcessBuilder在Java中构建一个进程,如下所示:

ProcessBuilder pb = new ProcessBuilder()
        .command("somecommand", "arg1", "arg2")
        .redirectErrorStream(true);
Process p = pb.start();

InputStream stdOut = p.getInputStream();

现在我的问题如下:我想捕获通过该进程的stdout和/或stderr的任何内容并异步重定向到System.out。 我希望进程及其输出重定向在后台运行。 到目前为止,我发现这样做的唯一方法是手动生成一个新的线程,该线程将从stdOut连续读取,然后调用write()write()方法。

new Thread(new Runnable(){
    public void run(){
        byte[] buffer = new byte[8192];
        int len = -1;
        while((len = stdOut.read(buffer)) > 0){
            System.out.write(buffer, 0, len);
        }
    }
}).start();

虽然这种方法很有效,但感觉有点脏。 最重要的是,它为我提供了一个正确管理和终止的线程。 有没有更好的方法来做到这一点?

trans by 2019-05-12T07:21:27Z

Java编程:从Java调用exe并传递参数

我正在找出一种从Java调用exe并传入特定参数的机制。 我能怎么做?

Process process = new ProcessBuilder("C:\\PathToExe\\MyExe.exe").start();
InputStream is = process.getInputStream();
InputStreamReader isr = new InputStreamReader(is);
BufferedReader br = new BufferedReader(isr);
String line;

System.out.printf("Output of running %s is:", Arrays.toString(args));

while ((line = br.readLine()) != null) {
  System.out.println(line);
}

以前的代码有效。 但是我无法传入参数.MyExe.exe接受参数。 另一个问题是PathToExe有空格。 ProcessBuilder似乎无法正常工作。 例如:

C:\\User\\My applications\\MyExe.exe

谢谢。

trans by 2019-04-17T12:37:59Z

1 共1页