все Python 3Linux · macOSosфункция
os.mkfifo
os — спецфайлы
Создаёт именованный канал (FIFO). Доступно на Unix.
Синтаксис
os.mkfifo(...)
Именованный канал виден как файл, но данных на диске не хранит: открытие на чтение блокируется, пока кто-нибудь не откроет его на запись, и наоборот. Поэтому в одном потоке нельзя открыть FIFO сначала на чтение, а потом на запись — первый же open() зависнет; на Linux выручает os.open() с флагом O_RDWR, но POSIX такое поведение не определяет. Права, как у mkdir, проходят через umask.
Примеры
import os, stat
os.mkfifo('demo.fifo') # → ? только Unix: в файловой системе появился именованный канал demo.fifo
print(stat.S_ISFIFO(os.stat('demo.fifo').st_mode)) # → True — это FIFO, а не обычный файл
os.mkfifo('private.fifo', 0o600) # → ? только Unix: канал, доступный на чтение и запись только владельцу
fd = os.open('demo.fifo', os.O_RDONLY | os.O_NONBLOCK) # → ? только Unix: обычный open() на чтение ждал бы, пока другой процесс не откроет канал на запись
os.mkfifo('demo.fifo') # → FileExistsError: [Errno 17] File exists: 'demo.fifo'
См. также
Частые ошибки
Открыть в полном глоссарииdocs.python.orgСообщить о неточности