gpt4 book ai didi

linux - 中断消息队列原语和系统调用的信号

转载 作者:太空宇宙 更新时间:2023-11-04 04:16:42 25 4
gpt4 key购买 nike

我有一个 Qt 程序,其中包含:

  1. 许多 Qt signal-slot对,用于实现一些套接字编程。
  2. 用于执行某些文件操作的系统调用
  3. 一些 Posix 消息队列代码,其中进程等待某些消息写入队列,然后读取并处理。

我面临两个问题:

我。有时,当进程在队列上等待读取某些消息时,根据文档,函数 mq_receive 返回的值会转换为消息Interrupted system call

ii. 有时,当进程使用系统调用执行文件操作时,应用程序会崩溃。

现在我读到here如何使用 TEMP_FAILURE_RETRY 宏重试失败的调用。

Q1。我的两个问题背后的问题是否与我使用 Qt 信号/槽机制的原因相同?

第二季度。如果是这样,TEMP_FAILURE_RETRY是处理这种情况的唯一好的/标准的方法吗?或者 Qt 提供了其他方法?

第三季度。 Qt 生成的信号是否会导致其他原语出现问题?为什么它只发生在消息队列和系统调用中,而不发生在其他 C++ 原语中?

有人可以发布一些文章/书籍的链接,我可以在其中了解信号/例程/系统调用如何以及为何可能导致彼此出现问题?我无法弄清楚我应该谷歌搜索/binging 的确切关键字是什么?

最佳答案

尝试调查thisthis 。也许,使用 QThread 而不是 POSIX 消息传递是有意义的,或者如链接 Qt Local sockets 之一所建议的那样。 。在所有这些之前,阅读 Qt GUI 和 QThreads 中的事件循环会对您有所帮助。

关于linux - 中断消息队列原语和系统调用的信号,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16078795/

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