繁体   English   中英

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

[英]Is there a cross-platform C signal library available(better open-sourced)?

我最近正在开发一个项目,我需要将部分Linux C代码移植到Windows。 代码使用Linux信号机制(我的意思是“sigaction”,“sigprocmast”等等),这在Windows上得不到很好的支持。

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

我认为这个问题也对你有意义,因为有一天你可能会得到类似的任务。

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

我已经在Google上做了很多关于这个主题的研究,但我找不到我想要的东西。 这是我到目前为止所做的

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

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

  3. 在整个谷歌搜索。 我尝试了关键词“C信号”跨平台“或跨平台-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,但您肯定无法按原样移植信号系统。

当我使用信号来中断睡眠系统调用时,我发现很难做到这一点

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

MY2C

你应该看看CYGWIN。

Windows上的信号问题是它们不存在。 Windows不是POSIX,在应用程序管理方面使用了几乎完全不同的方法。 它就像问一下悬挂式滑翔机上的火花塞在哪里,没有任何:)

您可以尝试使用cygwin移植您的库。 有几个应用程序遵循相同的方式。

只是做了一些研究,发现在Microsoft TechNet上编写POSIX标准代码

我看起来它提供了一些关于什么是相似的和什么不同的更多(更长)的合理细节,以及在用于移植Unix / Linux代码的代码中可以做什么,不能做什么和做什么。

它是一组更大的信息(参见层次结构侧栏)的一部分,我没有时间浏览...

除了CYGWIN,还有MSYS和MinGW

社区之间似乎也存在一些摩擦(或更常见的漠不关心),很少有人跨越这种鸿沟。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM