防止FIFO关闭/重用已关闭的FIFO
|
请考虑以下情形:
创建一个名为“ 0”的FIFO。在一个终端窗口(A)中运行
cat <test
,在另一个终端窗口(B)中运行2ѭ。现在可以在窗口B中写入并在窗口A中获得输出。还可以终止进程A并重新启动它,并且仍然可以根据需要使用此设置。但是,如果您在窗口B中终止该进程,据我所知,B将通过FIFO发送一个EOF到进程A,并且也终止该进程。
实际上,如果您运行的进程不会在EOF上终止,则仍然无法使用重定向到该进程的FIFO。我认为这是因为该FIFO被视为已关闭。
反正有解决此问题的方法吗?
之所以遇到这个问题,是因为我想将命令发送到在屏幕会话中运行的Minecraft服务器。例如:echo \"command\" >FIFO_to_server
。通过单独使用屏幕可能可以做到这一点,但是我对屏幕不是很满意,我认为仅使用管道的解决方案会更简单,更清洁。
没有找到相关结果
已邀请:
3 个回复
撵穆
。
即使看到输入文件的末尾,仍继续从其输入文件读取数据。让您的所有客户与管道交谈,然后将
连接到我的世界服务器:
正如jilles所提到的,使用一个技巧:管道支持多个编写器,并且仅在最后一个编写器消失时才关闭。因此,请确保有一个永远不会消失的客户。
问题是服务器从根本上设计为可以处理单个客户端。要处理多个客户端,应更改为使用套接字。将套接字视为“元管道”:连接到套接字会创建管道,一旦客户端断开连接,该特定管道就会关闭,但是服务器可以接受更多连接。这是干净的方法,因为如果两个客户端碰巧同时连接(使用管道,它们的命令可以散布),它还可以确保您不会混淆数据。但是,这需要更改Minecraft服务器。
豪抱怒掳
旦彤