Linux下利用信号的异步串口中断响应

本文介绍了在Linux环境下,如何利用信号SIGPOLL实现异步串口中断响应。通过sigaction函数关联信号和处理函数,结合fcntl设置设备文件和线程,实现当串口有数据时进行相应处理。同时提到在嵌入式环境中可能出现的编译问题及解决方案。
摘要由CSDN通过智能技术生成

    先悔过一下。因为一个月前就在学习这个,当时解决的差不多了,想着抽个空再记录这些,没想到这么短的时间就已经忘得

差不多了,真是不好,应该趁热打铁。废话不多说了,这里主要介绍在Linux下,利用信号来实现异步的串口中断响应。主要思路

很简单,首先是关联信号,在此是关联处理SIGPOLL;其次是等待指定的信号。
    异步I/O的实现有很多方式,【2】中提了几种,还有较新的epoll,和Poll本质上差不多。但本人当时尚不理解这些,没有明

白select、Poll等的具体做法,也采用了多线程。其实万万不该,由于逻辑处理的不好而导致的程序不可预测性太多,因此不太

同意【2】中的观点,只是用来参考使用了。但我这里讲的做法也是在多线程条件下的异步串口通信。
    Linux下信号的概念、原理以及初步的应用【1】中的上、下已经讲解得非常到位了,仔细读读都能找到自己所需要的。下面

具体记录我的实现过程。
    (1)关联信号。
     首先是利用sigaction函数来将指定的信号与处理函数关联,以及通过fcntl函数确定是在哪个线程中,关联哪个设备文件。

那么先是sigaction函数的原型:int sigaction(int signum,const struct sigaction  *act ,struct sigaction  *oldact);

其中struct sigaction 中的内容意义可以看【3】,
        struct sigaction sact;   
        sigemptyset(&sact.sa_mask);             //一般都先清空关注的信号集
       

  • 0
    点赞
  • 9
    收藏
    觉得还不错? 一键收藏
  • 5
    评论
评论 5
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值