【问题标题】:How do I redirect the output of one process as an input to another process? [duplicate]如何将一个进程的输出重定向为另一个进程的输入? [复制]
【发布时间】:2014-07-21 17:41:08
【问题描述】:

我需要执行命令,ps -aux | awk ' /^user/ { system("pstree " $2) }' 但由于我不能在一个进程中执行这两个进程,我想在单独的进程中执行这两个进程并将ps -aux 进程的输出重定向为 awk 进程的输入。我该如何编码?请帮忙。

【问题讨论】:

标签: java linux bash shell ubuntu


【解决方案1】:

pipe character (|) 将左侧命令的标准输出连接到右侧命令的标准输入。所以它已经按照你的要求做。

如果您的问题实际上与 Java 有关,您可能需要official Pipe class(由@kajacx 提供)。

【讨论】:

  • 你的意思是我需要java.nio.channels.Pipe而不是System.in/out
  • 如果您使用System.in/out,您需要创建两个在shell 中通信的Java 进程,而不是处理Java 中的所有管道。前者可能有一个用例,但我建议您将所有逻辑保持在同一种语言中。
  • 创建两个 java 进程如何阻碍处理除 java 之外的所有事情?为什么有两个java进程?为什么这是一个问题?当问题是将一个进程的输入重定向到另一个进程的输出时,为什么我们要在一个 java 进程中执行所有操作?你的回答让我完全困惑。
  • 您可以创建两个 Java 进程,一个运行 ps,另一个运行 awk,然后使用 shell 将输出从一个传送到另一个。或者您可以使用 one Java 进程并在其中创建一个管道,连接 psawk 命令。我会彻底推荐后者。
猜你喜欢
  • 2021-03-28
  • 1970-01-01
  • 2010-11-23
  • 2018-09-11
  • 1970-01-01
  • 1970-01-01
  • 2010-11-20
  • 2011-07-04
  • 2023-04-02
相关资源
最近更新 更多