我这是应该写入一个文件,并终止该进程以下简单的OCaml的异步工作。
Unix.openfile "foobar" ~mode:[`Creat;`Rdwr]
>>= fun fd ->
let wr = Writer.create fd in
Writer.write wr "this is a test";
Unix.close fd
>>= fun () ->
exit 0
然而,似乎fd
进行写入之前被关闭(显示SEXP的一部分,是“作家FD意外关闭”)。 有没有办法等待写入关闭文件描述符前完成? 其实,我不明白为什么Writer.write
不返回Deferred.t
就像Reader.read
一样。 那岂不是解决这一问题?
我的问题其实是一个小更普遍。 基本上,我有写东西用文件的定期工作Clock.every'
。 该程序可以在任何时候退出并关闭文件描述符。 如何确保所有的写操作都处理之前fd
得到关闭?
如果我停止工作是:
Unix.close fd
>>= fun () ->
exit 0
一个定时写入之间可以很好地发生Unix.close fd
和exit 0
。