为进程设置OutputStream

| 这是我的问题的摘录代码:
Process process = Runtime.getRuntime().exec(command);
    if (process.waitFor() != 0)
        throw new Exception(\"error\");
    reader = 
        new BufferedReader(new InputStreamReader(process.getInputStream()));
运行过程产生了巨大的产出。如果我将输出重定向到文件,该过程将更快终止,然后在屏幕上打印输出(标准输出)。 由于磁盘性能低下,文件系统权限等,我不希望将输出重定向到文件。 执行process.waitFor()时,Java被阻塞,直到进程(被调用方)终止,这可能需要很长时间。因此,为了绕过此问题,我想将流程的标准输出重定向到阅读器的流输入(代码的最后一行)。即,被调用方应向与阅读器链接的流产生输出,而不是在屏幕上打印输出。 希望我足够清楚。我不知道该怎么办?任何帮助都会很棒。     
已邀请:
        如果您不关心进程的输出,只需重定向到空设备,在Unix上为
> /dev/null
,在Windows上为
> NUL
。所有输出将被丢弃,您不必担心文件权限,性能等问题。 如果您确实关心输出,请看一下这篇文章,该文章为您展示使用
StreamGobbler
读取进程的stdout / stderr的正确方法。     
        您需要在调用waitFor()之前读取输出。目前,您正在等待它完成,它只能在完成输出后才能执行,而由于您没有读取输出而无法执行,因此它的缓冲区已满并且正在阻塞。     

要回复问题请先登录注册