Как я могу определить, что 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