2014-10-10 56 views
0

我正在QNX上運行twisted/crossbar.io(target:powerpc-unknown-nto-qnx6.5.0),但看起來QNX沒有siginterrupt()SA_RESTART標誌不受支持。因爲結果signals.siginterrupt()在嵌入式python中不存在。在沒有siginterrupt的posix(QNX)系統上運行扭曲()

有什麼辦法可以在像這樣的系統上運行/修補python/twisted?現在,當處理程序安裝時它會死亡,因爲signals模塊沒有siginterrupt()。即使在2.6天的時間裏,iternet /信號被構建爲c庫,他們依靠使用SA_RESTART實質上實現siginterrupt。

有沒有其他的選擇?

回答

1

你試過reactor.run(installSignalHandlers=False)?這會限制反應堆的功能性,但它可能會讓您跛行。

1

有什麼辦法可以在這樣的系統上運行/修補python/twisted嗎?

一般的答案是「port twisted to your target platform」。 Twisted與它運行的平臺進行了廣泛的交互。你可以用一個簡單的補丁在一個地方誘騙它不會死於AttributeError,但這並不意味着Twisted實際上會表現出它打算的行爲方式。

您是否有計劃完成Twisted到QNX的移植工作?或者你是否只是將你的手指與信號問題混淆在一起,而其他所有方法都會正常工作?至少,您應該運行測試套件以查看可能存在問題的位置(雖然通過測試也不能保證Twisted實際上正常工作,因爲這些測試都是在考慮其他平臺的情況下編寫的)。

一個更具體的答案是,你可以抓取舊版本的twisted.internet._signals模塊(嘗試r35834; r35835刪除了很多舊的支持代碼)。 Python 3移植工作從該模塊中移除了一些替代(不是很好,但更便攜)的信號處理策略。