gpt4 book ai didi

c - 是否有可用的跨平台 C 信号库(更好的开源)?

转载 作者:IT王子 更新时间:2023-10-29 01:17:41 27 4
gpt4 key购买 nike

我最近在做一个项目,我需要将一部分 Linux C 代码移植到 Windows。该代码使用 Linux 信号机制(我的意思是“sigaction”、“sigprocmast”等),但在 Windows 上不受支持。

是否有可用的 C/C++ 库实现跨平台信号机制(更好的开源)? 目前我只需要该库支持 Linux 和 Windows.

我认为这个问题对您来说也很有意义,因为有一天您可能会遇到类似的任务。

我的一位同事告诉我,ACE 是一个功能强大的库,完美地实现了跨平台信号机制,但他说这是一个巨大的库,真的需要一些时间来研究它。我的项目没有给我太多时间,所以我正在尝试寻找一个轻量级易于学习 的信号库。 (嗯..好吧,如果你知道的图书馆都很大,也请告诉我。:-)

我已经使用 Google 对这个主题进行了大量研究,但找不到我想要的东西。以下是到目前为止我所做的:

  1. 在 Stackoverflow.com 中搜索。人们询问了很多关于如何在 Linux 中使用信号的细节,但似乎没有人询问跨平台信号实现。

  2. 或者,在 Stackoverflow.com 上,人们询问了一种称为“信号槽”的机制。我认为这不是我需要的。

  3. 在整个谷歌搜索。我尝试了关键字“C signal‘cross platform’ OR cross-platform -game -python -gui -audio -digital -analysis -slot -image -processing -socket -time -directmedia”但找不到我想要的。

求助!谢谢!

最佳答案

我前段时间已经解决了这个问题。最大的问题是没有与 Windows 上的信号 等效的范例。只是完成方式不同。

我发现当我想使用 pthread 库将一些软件从 Linux 移植到 Windows 时。我很高兴地发现有一个 pthread 端口!伟大的 !但是他们在他们的文档中明确声明仅实现了带有信号 0 (IIRC) 的 pthread_kill(signal) API 调用,并且仅向您提供线程的状态(例如它是否正在运行)。

当您查看可移植线程库(如在 boost 中)时,它们使用中断点来处理两个模型/范例之间的差异。

总而言之,这取决于信号在您移植的应用程序中的使用方式。您当然可以将 Linux 上由信号处理的某些行为移植到 Windows,但您肯定不能“按原样”移植信号系统。

而且我发现很难做到这一点,当你使用信号来中断 sleep 系统调用时^^

如果有解决方案,我很高兴听到其他答案^^

我的2c

关于c - 是否有可用的跨平台 C 信号库(更好的开源)?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5092424/

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