我有一个QSerialPort从串行端口读取和写入的应用程序(使用)。当我以root用户身份运行此应用程序,然后以非 root 用户身份再次运行它时,我无法再写入串行端口,并收到以下错误:
QIODevice::write (QSerialPort): device not open
Run Code Online (Sandbox Code Playgroud)
非 root 用户位于该dialout组中,并且相关文件的权限/dev/tty**似乎未更改:
crw-rw---T 1 root dialout ......
Run Code Online (Sandbox Code Playgroud)
最奇怪的是,当我简单地使用 shell 以非 root 用户身份写入文件时,我没有收到错误:
$> echo "foo bar baz" >> /dev/ttyS0
$> echo $?
0
Run Code Online (Sandbox Code Playgroud)
我发现唯一可以解决该问题的方法是重新启动机器。
这里可能发生了什么?
我使用的是 Debian 7。