2012-05-08 29 views
3

我在haskell平臺上,將GHC 6.12.1作爲apt-get安裝在Debian Squeeze上。我如何從IOError中獲取底層的errno,因爲我需要在不同的線程上創建它最初的位置?如何從haskell中的IOError獲取errno?

我需要這個的原因是因爲我正在實現一個網絡協議,它暴露了電線上的實際errno值。我需要重建它嗎?

回答

4

errno是GHC中的thread-local。您需要將errno捕獲到一個線程中;然後將值Chan或其他通信抽象發送到您的監聽線程。

value itself存儲在thread TSO structure

+0

我從IO.try調用中獲得IOError,然後將IOError向下傳遞給TChan。你的意思是我需要用不同的機制替換IO.try,或者在IO.try之後立即得到IOError,我應該查找errno? – regularfry

+0

你應該在抓到異常的同時抓住errno,否則它可能會被清除。 –

+0

太棒了,謝謝。 – regularfry

相關問題