c - 使用 sigaction() 进行 I/O 处理

标签 c linux io serial-port can-bus

我需要编写一个能够在串口和can总线端口上读写的驱动程序。

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

有没有其他可能解决这个问题?

最佳答案

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

关于c - 使用 sigaction() 进行 I/O 处理,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35547670/

相关文章:

c - 将时间修改标记写入文件顶部

c - 当套接字无效时

c - 嵌套循环错误

c - 如何检查指针是否已被释放

linux - 跟踪链接库

c# - 我需要担心阻塞任务吗?

c - 在 C 中取消引用 malloc() 的返回

linux - 锁定每个 CPU 变量

linux - 在 Linux 中线程化时对函数的 undefined reference

java - 将 OutputStream 转换为字符串