Какие условия приводят к тому, что открытый неблокирующий именованный канал (fifo) становится «недоступным» для чтения?

Ситуация:

new_pipe = os.open(pipe_path, os.O_RDONLY | os.O_NONBLOCK) # pipe_path points to a FIFO
data = os.read(new_pipe, 1024)

При чтении иногда возникает ошибка errno -11: Ресурс временно недоступен.

Когда возникает эта ошибка? Это кажется очень редким, так как общие случаи возвращают данные:

  • Если ни один писатель не открыл канал, возвращается пустая строка ('').
  • Если писатель открыл канал, но в fifo нет данных, пустая строка ('') также возвращается
  • И, конечно, если писатель помещает данные в fifo, эти данные будут прочитаны.
13
задан UsAaR33 5 April 2012 в 02:06
поделиться