Ошибка сегментации QSerialPort при удалении последовательного порта - PullRequest
0 голосов
/ 18 января 2019

Мой вопрос похож на тот, который был найден здесь: Эффект QSerialPort на `/ dev / ttyS *` после завершения процесса? , а здесь: Не является ли проблемой отключение питания для работает QSerialPort? , но немного по-другому.

У меня есть модем, который подключен к порту / dev / ttyACM0. Это USB-модем, который эмулирует последовательный порт. Я могу открыть порт, читать и писать в него весь день. Приложение Qt, которое я пишу, должно быть защищенным от сбоев и избегать сбоев любой ценой. Я хочу корректно обработать все отключения без сбоя приложения, но если модем будет перезагружен и порт / dev / ttyACM0 исчезнет, ​​мое приложение завершится с ошибкой сегментации (сбрасывается ядро) в течение нескольких секунд.

Я могу определить, когда происходит это событие, и пытаюсь закрыть последовательный порт, но мое приложение всегда падает. Мое приложение запускается со службой, поэтому оно перезапускается, но этого недостаточно. Мне нужно предотвратить аварию. Я пытался перехватить сигналы SIGINT и SIGHUP, используя этот код: https://github.com/sijk/qt-unix-signals,, но это также не увенчалось успехом. Любые идеи о том, как решить эту проблему?

...