バックグラウンドで実行されている 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」と入力すると実際に得られるものです。
なぜ私がこのおかしな振る舞いをするのか知っている人はいますか?