在没有siginterrupt()的posix(QNX)系统上运行扭曲

时间:2014-10-10 21:17:08

标签: python twisted qnx

我正在尝试在QNX上运行twisted / crossbar.io(目标:powerpc-unknown-nto-qnx6.5.0),但是看起来QNX没有siginterrupt()和{{1} }标志不受支持。因此,嵌入式python中不存在signals.siginterrupt()。

有没有办法在像这样的系统上运行/修补python / twisted?现在它在安装处理程序时死亡,因为SA_RESTART模块没有signals。即使在旧的2.6天内,当iternet /信号被构建为c库时,它们仍然依赖于使用SA_RESTART实现siginterrupt。

还有其他选择吗?

2 个答案:

答案 0 :(得分:1)

你试过reactor.run(installSignalHandlers=False)吗?这限制了反应堆的功能,但它可能让你一瘸一拐。

答案 1 :(得分:1)

  

有没有办法在像这样的系统上运行/修补python / twisted?

一般答案是"端口扭曲到您的目标平台"。 Twisted与其运行的平台进行了广泛的交互。你可以用一个简单的补丁在一个地方欺骗它而不是AttributeError,但这并不意味着Twisted实际上会按照预期的方式行事。

你有计划完成Twisted到QNX的移植工作吗?或者你只是用手指划过信号问题,其他一切都会正常工作?至少,您应该运行测试套件以查看可能存在问题的位置(尽管通过测试也不能保证Twisted实际上正常工作,因为这些测试都是在考虑其他平台的情况下编写的)。

更具体的答案是,您可以获取twisted.internet._signals模块的旧版本(尝试r35834; r35835删除了许多旧的支持代码)。 Python 3移植工作从该模块中删除了一些备用(不是很好但更便携)的信号处理策略。