我正在尝试使用ocaml-inotify包。这个问题的相关部分可以定义如下
module Inotify : sig
type wd
val int_of_wd : wd -> int
end = struct
type wd = int
let int_of_wd wd = wd
end
这项工作是在一个 setuid 脚本中进行的,我希望 inotify 部分以非特权方式处理,因此我将分叉然后 setuid-ing 到子级中的非特权用户。但是,这意味着我需要通过管道将 wd 实体传递回父级,因此需要对它们进行序列化和反序列化,这需要一个int_to_wd
函数。
我尝试按如下方式扩展模块:
module Rich_Inotify : sig
include module type of Inotify with type wd := int
val wd_of_int : int -> wd
end = struct
include Inotify
let wd_of_int (wd:int) : wd = wd
end
module Inotify = Rich_Inotify
但是,编译器抱怨那wd
是一个int
而不是一个wd
。我如何说服它这些类型是相同的?