FIFO Python ведут себя по-разному на Raspberry Pi - PullRequest
0 голосов
/ 06 декабря 2018

У меня есть короткий скрипт на python, который получает имена файлов из FIFO Unix и выполняет некоторую обработку файла.На моем настольном компьютере (Debian unstable, x86) скрипт работает должным образом, получая каждое имя файла только один раз и обрабатывая его.На моем Raspberry Pi (Raspbian 9, armhf) тот же сценарий вместо этого считывает значения из FIFO, закрывает его, затем снова открывает и снова считывает те же значения.Оба компьютера работают под управлением Python 3.5.3.

#!/usr/bin/python3
import os, grp
from formatim import prepare_image

FIFO_PATH='/tmp/sticker-format-fifo'

try:
    os.mkfifo(FIFO_PATH)
    os.chown(FIFO_PATH, -1, grp.getgrnam("stickersubmitters").gr_gid)
    os.chmod(FIFO_PATH, 0o770)
except OSError as e:
    print('file exists, probably: ', e)


while True:
    fifo = open(FIFO_PATH, 'r')
    print('FIFO opened')
    for line in fifo:
        print("Job:", line)
        (length, fname) = prepare_image(line.replace('\n', ''))
        print("Done: ", length, fname)
    fifo.close()

К сожалению, короткий сценарий bash на Pi действительно читает из FIFO, как и ожидалось:

    #!/bin/bash
    fifo_name="/tmp/sticker-format-fifo"
    while true
    do
        if read line; then
            echo $line
        fi
    done <"$fifo_name"

Есть ли способ заставить скрипт python вести себя так, как задумано на Pi

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...