Как я могу определить, что fifo был удален в Python

В 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, который больше не существует?

1 ответ

Вы можете сделать следующее:

import os
try:
    os.stat(reader.fileno())
except OSError:
    # The FIFO has gone away
sleep(0.1)  # Wait for some more input
Другие вопросы по тегам