1

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

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不再存在?

4

1 回答 1

2

您可以执行以下操作:

import os
try:
    os.stat(reader.fileno())
except OSError:
    # The FIFO has gone away
sleep(0.1)  # Wait for some more input
于 2013-08-01T21:10:05.103 回答