【问题标题】:How to get the errno from an IOError in haskell?如何从haskell中的IOError中获取errno?
【发布时间】:2012-05-08 11:31:43
【问题描述】:

我在 Haskell 平台上,GHC 6.12.1 作为 apt-get 安装在 Debian Squeeze 上。考虑到我需要它在与最初引发它的位置不同的线程上,我如何从 IOError 中获取底层 errno?

我需要这个的原因是因为我正在实现一个网络协议,该协议在网络上公开了实际的 errno 值。我需要重建它吗?

【问题讨论】:

    标签: haskell io ghc errno


    【解决方案1】:

    errno 在 GHC 中是 thread-local。您需要将 errno 捕获在一个线程中;然后将值通过Chan 或其他通信抽象发送到您的侦听线程。

    value itself 存储在thread TSO structure 中。

    【讨论】:

    • 我从 IO.try 调用中得到一个 IOError,然后将 IOError 放到一个 TChan 中。你的意思是我需要用不同的机制替换 IO.try,还是我应该在 IO.try 之后立即得到 IOError 后查找 errno?
    • 您应该在捕获异常的同时获取 errno,否则它可能会被清除。
    猜你喜欢
    • 2010-11-11
    • 1970-01-01
    • 1970-01-01
    • 2016-10-24
    • 2013-11-21
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多