java - Windows 中缺少 Java 进程的命令行输出

标签 java process stream command

我有一些使用 Java apache exec 类来运行外部进程的简单代码。

  Executor ex = new DefaultExecutor();
  ex.setStreamHandler(new PumpStreamHandler(System.out, System.out, System.in));
  CommandLine cl = new CommandLine(
     "C:\\program.exe");

     ex.execute(cl);

对于某些命令行程序,这会按预期工作,并将程序的所有输出都放入“out”流中,同时将我自己的文本接受到“in”流中。但是,对于其他程序,进程的输出是可见的,从命令行手动运行,但是当我通过 java 进程运行时,我没有得到任何东西。

我想最终写入标准输入并在代码本身中检索和分析标准输出。

如果有我不知道的原因,为什么有些程序似乎在命令行上输出文本,但当我将它们作为 java 进程运行时,我却没有通过流接收到任何东西?

这发生在 Windows 中。

最佳答案

进程外代码不会转到相同的命令行输出,除非您明确配置它这样做。此外,作为一般规则,最好使用像 log4j 这样的日志库而不是执行 println 语句。

关于java - Windows 中缺少 Java 进程的命令行输出,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9994157/

相关文章:

java - 在 fragment 布局上使用谷歌地图时遇到问题

java - 在 Tomcat 上使用多个 Web 应用程序确定 Quartz 设置

java - 为什么 Java ArrayList 删除功能似乎花费这么少?

c# - 如何从 GZipStream 获取字节数组或可读流

c - 如何检查 stdin 是否仍然打开而不阻塞?

java - JPA : removing from a collection 中管理双向关系时出现问题

unit-testing - 开发人员测试与 QA 团队测试 - 正确的工作分工是什么?

python - 阐明在 Python 中使用管道和子进程?

linux - 如何记录 Linux 进程的内存和 CPU 使用情况

java - 使用 dom4j 从流中读取单个 XML 文档