gpt4 book ai didi

c - 多次读取被警报中断

转载 作者:行者123 更新时间:2023-11-30 20:36:01 26 4
gpt4 key购买 nike

我在串行端口上设置了多个阻塞读取,并使用 setitimer() 进行超时。当我完成阅读(或超时到期并且 read() 返回 EINT)时,我写入一条不同的消息,重新启动警报并再次开始阅读。然而,我现在遇到了一个问题——两次读取之间闹钟到期了怎么办?我现在想停下来,但我只想继续阅读下一篇。 (设置一些标志只会将问题更改为“如果警报在标志和读取之间过期,我该怎么办?”)

最佳答案

有一种方法可以实现你说你想做的事情,但是它非常丑陋。

  1. 创建一个管道。关闭它的写入端。这将为您提供一个死的且无用的描述符(对于读取端)。
  2. 获取串行端口的描述符并复制它以保存副本。
  3. 在中断处理程序中,通过串行端口描述符dup2 死描述符。这将确保下一次读取写入失败并且函数返回。
  4. 为了让事情恢复正常,dup2 将保存的串行端口描述符副本覆盖您杀死的串行端口描述符。

关于c - 多次读取被警报中断,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36902185/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com