串口软中断SIGIO信号

jiangmin7790594 2008-03-05 02:29:42
LINUX下串口问题大家讨论下,急
我现在采用两个串口来分别接收和发送,采用信号SIGIO中断方式调用,我需要要同一时间里,两个中断都能响应,但是我现在的程序只能响应一个中断,先开接收线程OK,然后再打开发送线程,接收线程的串口信号SIGIO中断就进不来了,向大家请教下,因为是两个串口,一个收一个发,应该是不相关的,
int m_recvfd = open("dev/ttyS0");
int m_sendfd = open("dev/ttys1");

struct sigaction m_recvIO
m_recvIO.sa_handle = recvcallbackfunction;


我的串口用了
fcntl( m_fd, F_SETFL, O_ASYNC );
fcntl( m_fd, F_SETOWN, getpid());
是不是这里把信号给了整个进程,而不是每个线程,才导致两个线程不能同时响应

struct sigaction m_sendIO
m_sendIO.sa_handle = sendcallbackfunction;
...全文
154 2 打赏 收藏 转发到动态 举报
写回复
用AI写文章
2 条回复
切换为时间正序
请发表友善的回复…
发表回复
threeleafzerg 2008-03-18
  • 打赏
  • 举报
回复
我的串口用了
fcntl( m_fd, F_SETFL, O_ASYNC );
fcntl( m_fd, F_SETOWN, getpid());
是不是这里把信号给了整个进程,而不是每个线程,才导致两个线程不能同时响应

不是的,是当信号发生时,往往只发给一个线程,不可能2个线程同时获得那个信号。
dengj1983 2008-03-12
  • 打赏
  • 举报
回复
shi a

23,116

社区成员

发帖
与我相关
我的任务
社区描述
Linux/Unix社区 应用程序开发区
社区管理员
  • 应用程序开发区社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧