eva*_*ing 4 c linux multithreading posix signals
我有一个连续读取数据串口的线程.如果主程序收到SIGINT,则在串行端口线程上调用g_thread_join().
但是,由于读取阻塞,串口线程不会返回并且程序停止,直到我在串行线上获得一个字节,然后它就可以退出.
有没有办法将SIGINT传递给read(),以便在主线程需要它时可以强制它返回?
alk*_*alk 5
要read()返回EINTR,请在安装信号处理程序时传入调用SA_RESTART的成员sa_flags中取消设置.struct sigactionsigaction()SIGINT
read()
EINTR
SA_RESTART
sa_flags
struct sigaction
sigaction()
SIGINT
另一种方法是避免阻塞read().请查看此问题的答案:如何避免阻止读取功能?
mic*_*slm 4
关于从串行端口读取时实现 read() 超时的上一个问题的公认答案显示了如何使用超时执行读取。因此,您发送的 SIGINT 信号最终将被执行。select(2)
select(2)
归档时间:
11 年,6 月 前
查看次数:
5405 次
最近记录: