I/O 使用 sigaction() 处理

I/O Handling with sigaction()

我需要写一个能够读写串行和CAN总线端口的驱动程序。

串口是用一个sigaction()和一个事件处理器实现的。当我尝试为 can 总线实现相同的功能时,只会通知最后一个事件处理程序,因为可能只有分配给 sigaction() 的事件句柄。

有没有其他方法可以解决这个问题?

您的信号处理程序需要确定发出信号的原因并采取适当的行动。您可能想要使用 sigprocmask() 阻止更多信号,因为您可能会在信号处理程序中被中断,检查串行端口和 can 总线上是否有任何数据可用,将其复制或设置您需要的任何标志到,然后在信号处理程序的末尾取消阻止信号。