导致设备或资源繁忙的杀进程:'/ dev / ttyUSB0'?

问题描述 投票:15回答:2

我使用以下Python代码连接到Arduino开发板。

device=glob.glob("/dev/ttyUSB*")[0]
time.sleep(1)
arduino = serial.Serial(device, 115200, timeout=5)

它通常可以正常工作,但是以某种方式在重启后必须通过其他方式访问该板,这给我带来了错误

serial.serialutil.SerialException:无法打开端口/ dev / ttyUSB0:[Errno 16]设备或资源繁忙:'/ dev / ttyUSB0'

[拔出并重新插入USB插头时,我可以正常执行Python代码,而不会发生错误。如何避免其他进程阻塞端口?以及如何找出此错误的原因?

python serial-port arduino pyserial
2个回答
18
投票

您可以使用

$ fuser /dev/ttyUSB0

以列出使用该文件的进程的PID。另外,如果您的fuser命令支持,则可以使用-k选项将其杀死。


0
投票

就我而言

$ fuser /dev/ttyUSB0

没有工作(什么也没显示。)>

但是,正在起作用的是以下内容:

$ sudo lsof /dev/ttyUSB0

这给了我一个使用串行端口的进程的列表,我可以简单地使用killPID(对应于列表中的第二列)。

© www.soinside.com 2019 - 2024. All rights reserved.