我在串口上设置了多个阻塞读取,并使用setitimer()进行超时。当我完成阅读(或超时到期并且read()返回EINT)时,我写了一条不同的消息,重新启动警报并再次开始阅读。但是,我现在已经解决了一个问题 - 当警报在两次读取之间到期时,我该怎么办?我现在想停下来,但我会去下一次阅读。 (设置一些标志只会将问题改为“如果报警在标志和读取之间到期,我该怎么办?”
答案 0 :(得分:0)
有一种方法可以做你想说的事情,但这很难看。
dup
保存副本。dup2
串行端口描述符上的死描述符。这将确保下一个read
或write
失败并且函数返回。dup2
保存的串口描述符副本超过你杀死的那个。