1

我希望将一个字符发送到在后台运行的 Java 进程。我发现这篇文章https://serverfault.com/questions/178457/can-i-send-some-text-to-the-stdin-of-an-active-process-running-in-a-screen-sessi? answertab=active#comment155464_178470我认为可以解决问题,但实际上并没有。出于测试目的,我添加了一行

 System.out.println("This is what I read "+(int)temp);

以这种方式读取 temp 的位置

int temp = inputStreamReader.read();

确实发生了一些非常奇怪的事情:

  • 我在终端窗口中启动进程(这次不在后台)
  • 我打开另一个终端并查找进程的 PID
  • 我运行命令

    echo q > /proc/*pid_of_the_process/fd/0

  • 在另一个窗口中,这条线出现

    q

所以出于某种原因,我在进程正在运行的终端中看到了这个字符,但它实际上并没有被进程读取,因为如果是这种情况,那么我会看到这一行

This is what I read 113

如果我在终端窗口中键入“q”,这就是我实际得到的。

有人知道我为什么会出现这种有趣的行为吗?

4

0 回答 0