如何获取使用 TextIO.openIn 打开的文件的文件描述符?

How do I get the file descriptor of a file opened using TextIO.openIn?

在标准 ML 中,我使用 TextIO.openIn "myfile.txt" 打开了一个文件。此 returns 类型为 TextIO.instream 的值。我如何从这个 instream 中获取类型 Posix.FileSys.file_desc 的 POSIX 文件描述符?

这是一个函数,它返回一个 Posix.FileSys.file_desc option

fun instreamToPosixFD (ins: TextIO.instream) : Posix.FileSys.file_desc option =
  let
    val (TextPrimIO.RD reader, _) =
      TextIO.StreamIO.getReader (TextIO.getInstream ins)
  in
    case #ioDesc reader of
      NONE => NONE
    | SOME id => Posix.FileSys.iodToFD id
  end

输出使用option与Basis Library中的类型一致。据我所知,如果你用 TextIO.openIn 打开一个文件并将结果传递给这个函数,你将得到 SOME 结果。我的猜测是 NONE 仅适用于没有打开文件支持的 TextIO.instream