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

标签 python linux named-pipes mkfifo

在 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() 在没有数据时和 fifo 已被删除时(通过调用 remove() 的外部程序)返回空字符串).
有没有办法告诉我正在收听的 fifo 不再存在?

最佳答案

您可以执行以下操作:

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

关于python - 我如何检测到 fifo 已在 Python 中被删除,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17999902/

相关文章:

.net - WCF命名管道安全性和多个用户 session ?

c# - 命名管道示例

python - 如何检查字符串是否为空或长度为零

python - 使用谷歌应用引擎python从外部链接上传图像到谷歌云存储

java - 任何编程语言中的无理数表示?

c++ - 为什么这里举例说明在 LINUX 中使用命名管道 -FIFO 的程序会出现竞争条件?

python - Django 模板,如果项目 id 等于父循环名称,则循环遍历项目

c++ - 如何在 Linux/g++ 中读取 Shift+插入(粘贴)字符串?

linux - nginx 已安装但站点未加载

linux - 错误 : Wildfly dead but pid file exists