如何获取使用 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
。
在标准 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
。