如果 I open Core.Std
,尝试使用close_out
函数关闭 anout_channel
会给我一个错误,因为 Core 更改了的类型签名close_out
给我一个弃用错误消息。
close_out;;
- : [ `Deprecated_use_out_channel ] -> [ `Deprecated_use_out_channel ] = <fun>
第一个问题:为什么 Core deprecate close_out
deprecated 但不弃用close_out_noerr
?
第二个问题: Core 仍然希望我使用in_channel
s 和out_channel
s 还是更喜欢我为 IO 使用不同的 API?
第三个问题:我能找到的唯一其他 IO API 是类似read
或模块write
中的函数Unix
,它们适用于文件描述符而不是文件句柄。在 C 中,文件描述符函数直接发出系统调用,而来自 stdio.h 的那些接收FILE *
缓冲 IO。这在 Ocaml 中是否类似于 Unix 模块中的函数直接发出系统调用以及使用in_channel
和out_channel
执行缓冲 IO 的函数?