次のシナリオを検討してください。
名前の付いたFIFOtest
が作成されます。あるターミナルウィンドウ(A)で実行cat <test
し、別のターミナルウィンドウ(B)で実行しcat >test
ます。これで、ウィンドウBに書き込み、ウィンドウAで出力を取得できるようになりました。プロセスAを終了して再起動しても、このセットアップを疑わしいものとして使用することもできます。ただし、ウィンドウBでプロセスを終了すると、Bは(私が知る限り)FIFOを介してEOFをプロセスAに送信し、それも終了します。
実際、EOFで終了しないプロセスを実行した場合でも、プロセスにリダイレクトしたFIFOを使用することはできません。これは、このFIFOが閉じていると見なされるためだと思います。
この問題を回避する方法はありますか?
この問題が発生した理由は、スクリーンセッションで実行されているMinecraftサーバーにコマンドを送信したいためです。例:echo "command" >FIFO_to_server
。これはおそらくスクリーンを単独で使用することで可能ですが、私はスクリーンにあまり慣れていません。パイプのみを使用する解決策は、より単純でクリーンなものになると思います。