Остановить python скрипт, запускающий бесконечный l oop в скомпилированном модуле c - PullRequest
1 голос
/ 10 июля 2020

Я разработчик встроенных C и очень новичок в python, так что, пожалуйста, несите меня.

Я использую linux и скомпилировал модуль общих объектов из библиотеки C и эта библиотека C открывает последовательный порт на машине Linux и общается с целью через uart. На данный момент он мало что делает и просто печатает данные, полученные через uart в терминале.

Функция в myModule. c is

void startUartComm(){
  openUart();

  while(1) {
    receiveDataOverUartAndPrint();  
  }
}

У меня есть теперь импортировал этот скомпилированный модуль в мой python скрипт и вызвал его, как показано ниже. Я хочу остановить выполнение сценария python в этом бесконечном режиме, пока l oop, и я сделал что-то вроде этого

import sys
import myModule

try:
    myModule.startUartComm()

except KeyboardInterrupt:
    sys.exit()

Нажатие Ctrl + C ничего не сделал, но Ctrl + Z остановил скрипт. Но когда я снова запускаю скрипт, я получаю сообщение об ошибке из библиотеки C о том, что последовательный порт занят и не может быть использован.

With Ctrl + C Я мог успешно выйти из автономного приложения C и запустить его снова, не получая сообщения о занятости последовательного порта.

Вопрос в том, как я могу правильно остановить скрипт python в этом case, тем самым остановив и мое приложение.

...