将FD转换为Handle

 静-静-静距离 发布于 2023-02-10 10:32

我想打开一个伪tty,并使用生成的从属终端连接到子进程上的stdin / stdout。openPseudoTerminal给我一个IO (System.Posix.Types.Fd, System.Posix.Types.Fd),我试图将其转化为一对句柄(特定fdToHandleGHC.IO.Handle.FdGHC,但我找不到其他这样的函数)。但是,我得到以下信息:

liftA (fdToHandle *** fdToHandle) openPseudoTerminal
Couldn't match type `System.Posix.Types.Fd'
               with `System.Posix.Internals.FD'

有什么想法可以在这两个(大概相似)的事物之间转换吗?

对于奖励积分,这将给我IO (IO Handle, IO Handle)-是否有一种巧妙的方法可以将其转换为IO (Handle, Handle)

1 个回答
  • openPseudoTerminal在Unix软件包中,该软件包还在中提供了fdToHandle具有适当类型的System.Posix.IO

    我将使用到目前为止我提出的最好的单线处理这对IO Handles:

    getHandles :: IO (Handle, Handle)
    getHandles =
      openPseudoTerminal >>= uncurry ap . (fmap (,) . fdToHandle *** fdToHandle)
    

    要么:

    getHandles =
      openPseudoTerminal >>= uncurry (ap . fmap (,)) . join (***) fdToHandle
    

    2023-02-10 10:33 回答
撰写答案
今天,你开发时遇到什么问题呢?
立即提问
热门标签
PHP1.CN | 中国最专业的PHP中文社区 | PNG素材下载 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有