你的意思是告诉我,一个历史几乎完全与 unix 脱节的操作系统没有遵守 unix 派生操作系统之间的互操作性规范? 是的,不,这听起来是对的。 ;)
据我所知, Posix 信号在 Windows 下通常不可用。 确实存在一个带有各种 POSIX API 子集的官方支持的子系统,但显然只有当您购买 vista/win7 的企业版或终极版时才可用。 这包括编写支持 POSIX 信号(但不自动支持它们)的软件的能力。 地狱,企业Windows unix ......事情......甚至有一个针对它的旧的且看似未维护的debian端口。 怎么这么恐怖?
无论如何,跳回红宝石。 初始移植是使用 cygwin 完成的。 Cygwin 是一个绝对庞大的 POSIX 和通用 UNIX 兼容层,它牺牲了性能、运行时大小和功能作为兼容性成本。 然而,它确实在其他敌对领域提供了绝对丰富的 unix 舒适感。 只要您使用基于 cygwin 的 ruby,如果信号捕获在 Windows 中工作得很好,我至少不会感到惊讶。
最初的windows一键安装程序使用了visual studio 6,这是恐龙古代。 当前的 Windows 一键安装程序使用了 mingw 和 msys。 两者都不支持 posix 信号,但我不知道更多。 一看,看到一个“gcc.bat”和“make.bat”,心里很难过。
顺便说一句,ISO C99 确实定义了实现者需要支持的少量非 posix 信号,但唯一可以通过退出处理程序捕获的两个信号是 SIGINT 和 SIGTERM(至少根据规范,我们都知道如何微软非常喜欢遵守标准)。
大声笑,这是受支持信号的完整列表,并记录了解决其余问题的
感谢您的研究,我认为我们需要找到一种解决方法并跳过 Windows 上的信号 :)
最有用的评论
大声笑,这是受支持信号的完整列表,并记录了解决其余问题的