Unix 在ocaml(linux)中以亚秒精度获取文件的mtime

Unix 在ocaml(linux)中以亚秒精度获取文件的mtime,unix,ocaml,filemtime,Unix,Ocaml,Filemtime,Ocaml的Unix模块提供了一个stat函数,它返回一个带有floatst_mtime成员的记录 这似乎总是二级精度,即使在支持亚秒精度的Linux上也是如此。事实上,它是一个浮点,而不是一个整数,这让我有希望从中得到一个亚秒级的精确时间(或者类似的时间),但我不知道怎么做 我很乐意使用额外的OPAM库。我已经在使用电池了,所以我不想再使用Jane Street Core之类的东西了,但小型的库也可以 这是我用来测试的脚本: #!/usr/bin/env ocamlscript Ocaml.p

Ocaml的
Unix
模块提供了一个
stat
函数,它返回一个带有float
st_mtime
成员的记录

这似乎总是二级精度,即使在支持亚秒精度的Linux上也是如此。事实上,它是一个浮点,而不是一个整数,这让我有希望从中得到一个亚秒级的精确时间(或者类似的时间),但我不知道怎么做

我很乐意使用额外的OPAM库。我已经在使用电池了,所以我不想再使用Jane Street Core之类的东西了,但小型的库也可以

这是我用来测试的脚本:

#!/usr/bin/env ocamlscript
Ocaml.packs := ["unix"]
--
open Unix
open Printf

let () =
    let this_file = Array.get Sys.argv 0 in
    let stats = Unix.stat this_file in
    printf "mtime: %f" stats.st_mtime
在我的Linux(x86_64)计算机上运行时,它会打印:

mtime: 1388567583.000000

Python在获得一个亚秒的
mtime
上没有问题,因此我的操作系统和FS肯定支持它。

可以在Inria的代码库的底部看到
Unix.stat
的实现。如您所见,可移植秒精度时间值直接转换为双倍,忽略了
struct stat
中可用的较新纳秒精度值

请考虑提交错误报告,以便改进。< /P> 同时,如果您迫切需要此功能,而且迫不及待,您可以编写自己的改进版

stat\u ext
,返回次秒时间戳。当然,除非有很大的需要,否则最好避免重新实现stdlib