Linux 使串行端口在握手线路更改时发出通知

Linux 使串行端口在握手线路更改时发出通知,linux,serial-port,Linux,Serial Port,是否可以打开串行设备(如/dev/ttyS0),并通过select/poll/等获得通知。。。或者当握手线路(例如CTS/RTS或DSR/DTR)改变时的信号?我知道在硬件层面上,UART会发出一个中断,告诉内核它已经改变了,但是在userland中我能得到通知吗 编辑:我知道TIOCMIWAIT,但是ioctl调用会阻塞,直到状态行更改。相反,我希望继续进行一般性处理,并在更改以及其他事件时通知轮询或类似情况。无法等待DTR/RTS线路在userland中更改。在Linux上执行此操作的唯一

是否可以打开串行设备(如
/dev/ttyS0
),并通过
select
/
poll
/等获得通知。。。或者当握手线路(例如
CTS
/
RTS
DSR
/
DTR
)改变时的信号?我知道在硬件层面上,UART会发出一个中断,告诉内核它已经改变了,但是在userland中我能得到通知吗



编辑:我知道
TIOCMIWAIT
,但是
ioctl
调用会阻塞,直到状态行更改。相反,我希望继续进行一般性处理,并在更改以及其他事件时通知
轮询
或类似情况。

无法等待DTR/RTS线路在userland中更改。在Linux上执行此操作的唯一方法是不断轮询设备,检查RTS/DTR线路的状态是否已更改。我通常从gtkerm窃取我的串行端口代码,然后


您可以尝试使用
TIOCMIWAIT
,但如果我没记错的话,这将与Linux正在使用的串行端口的驱动程序紧密相连,因此可能无法在驱动程序之间工作。

可能的重复不直接-这篇文章只讨论了
TIOCMIWAIT
,直到状态位改变为止。我希望通过select/poll wakeup或信号异步通知我。好的,说得好。现在我该如何解胶?我想我可以投票补偿;-)通过将
ioctl TIOCMIWAIT
放在一个单独的线程中,可以实现您想要的功能吗?