我正在使用inline-c编写一些 C 库绑定,并且一些 C 函数采用 FILE* 参数。是否有将 Haskell 句柄转换为 FILE* 的首选方法?或者这是与图书馆交互的错误方法?
我最初的想法是使用handleToFd 首先将给定的句柄转换为文件描述符,然后调用 fopen() 以获取 FILE* 以传递给库函数。handleToFd 的文档指出在 Handle 上使用它具有刷新和关闭它的效果,所以前面提到的我必须记录 Handle(?) 的状态并在调用 fopen() 时恢复它。这对我来说似乎是一个坏主意,因为 AFAIK 无法重新打开标准流,如果我使用 Handle 内部结构,我可能不得不求助于黑魔法。