如何在 Python 中检测到 fifo 已被删除

Posted

技术标签:

【中文标题】如何在 Python 中检测到 fifo 已被删除【英文标题】:How do I detect that a fifo has been deleted in Python 【发布时间】:2013-08-01 16:44:38 【问题描述】:

在 Python 中,我可以通过以下方式轮询 fifo(使用 Linux mkfifo 命令创建)上的传入数据:

reader = open(known_fifo_name,"r")
while True:
   data = reader.read(1)
   if data:
      process(data)
   else:
      time.sleep(0.1) #no data now, try later

read() 在没有数据时以及当先进先出已被删除(通过remove() 调用的外部程序)时都会返回空字符串。 有没有办法告诉我正在听的fifo不再存在?

【问题讨论】:

抱歉,对FIFO不太熟悉。 known_fifo_name 是变量(数据结构)还是文件?或者它到底是什么? 另外,如果它返回一个空字符串.. 你能做到 if data!= "" 【参考方案1】:

您可以执行以下操作:

import os
try:
    os.stat(reader.fileno())
except OSError:
    # The FIFO has gone away
sleep(0.1)  # Wait for some more input

【讨论】:

以上是关于如何在 Python 中检测到 fifo 已被删除的主要内容,如果未能解决你的问题,请参考以下文章

检测打开的文件/设备是不是已被替换/删除

检测android联系人是不是已被删除

git:如何使其“意识到”文件已被删除[重复]

FIFO管道中的数据丢失?

如何从 R 中的 xlsx 文件中检测“删除线”样式

检测阅读器何时关闭命名管道(FIFO)