pEP -Расшифровать -при отправке -, фильтрах и Tbird

Я думаю, что нашел одно решение, хотя я не уверен, обязательно ли оно идеально.

Мы можем отредактировать сценарий, чтобы установить мастера pty в неблокирующий -режим:

import fcntl

...

for app in all_apps:
    app_master, app_slave = pty.openpty()

    flags = fcntl.fcntl(app_master, fcntl.F_GETFL)
    flags |= os.O_NONBLOCK
    fnctl.fcntl(app_master, fcntl.F_SETFL, flags)

Затем, всякий раз, когда мы записываем в мастер, если запись обычно блокируется, мы можем поймать BlockingIOErrorдля продолжения:

            # (try to) send the message to each application
            try:
                os.write(app_fd, data)
            except BlockingIOError:
                print("Caught BlockingIOError")

Это не решает фундаментальной проблемы, заключающейся в том, что приложения могут неправильно себя вести и не читать свои последовательные порты, но при таком решении сценарий, по крайней мере, продолжит выполнять свою работу. Цена заключается в том, что некоторые данные могут быть потеряны (, передаваемые приложениям, которые не используют свой порт ).

0
09.03.2021, 16:59
1 ответ

Похоже, каким-то образом был активирован фильтр «pEp -Расшифровать -при -Отправке».

Удалил и сообщения вроде исчезли. Все еще не уверен, как это было установлено. Есть некоторые предположения о странном поведении в Mozillazine для более ранних версий, хотя это давно должно было исчезнуть.

0
18.03.2021, 22:26

Теги

Похожие вопросы