停止运行编译的c模块中存在的无限循环的python脚本

2024-09-27 00:16:02 发布

您现在位置:Python中文网/ 问答频道 /正文

我是一名嵌入式C开发人员,对python非常陌生,所以请耐心听我说

我在linux上,从一个C库编译了一个共享对象模块,这个C库在linux机器上打开串行端口,并通过uart与目标进行通信。 目前它没有做很多工作,只是在终端中打印通过uart接收的数据

myModule.c中的函数是

void startUartComm(){
  openUart();

  while(1) {
    receiveDataOverUartAndPrint();  
  }
}

现在,我已经在python脚本中导入了这个编译后的模块,并像下面那样调用它。我想阻止python脚本在无休止的while循环中运行,我做了类似的事情

import sys
import myModule

try:
    myModule.startUartComm()

except KeyboardInterrupt:
    sys.exit()

按Ctrl+C除了停止脚本外,什么也不做。Ctrl+Z停止脚本。
但是当我再次运行脚本时,我从C库中得到一个错误,串行端口正忙,无法使用

使用Ctrl+C我可以成功地退出独立的C应用程序并再次运行它,而不会出现关于繁忙串行端口的错误

问题是,在这种情况下,如何以正确的方式停止python脚本,从而停止我的应用程序


Tags: 模块端口import脚本应用程序开发人员linux错误

热门问题