考虑以下场景:
创建了一个名为的 FIFO test
。在一个终端窗口 (A) 我运行cat <test
并在另一个 (B) 中运行cat >test
。现在可以在窗口 B 中写入并在窗口 A 中获取输出。也可以终止进程 A 并重新启动它,并且仍然可以怀疑使用此设置。但是,如果您在窗口 B 中终止进程,则 B 将(据我所知)通过 FIFO 向进程 A 发送 EOF 并终止该进程。
事实上,如果您运行的进程未在 EOF 上终止,您仍然无法使用重定向到该进程的 FIFO。我认为这是因为这个 FIFO 被认为是关闭的。
有没有办法解决这个问题?
我遇到这个问题的原因是因为我想向在屏幕会话中运行的 minecraft 服务器发送命令。例如:echo "command" >FIFO_to_server
。这可能通过单独使用屏幕来实现,但我对屏幕不是很满意,我认为仅使用管道的解决方案会更简单、更清洁。