带有Core_unix.exec的OCaml Core_unix.fork永远不会返回
发布时间:2020-12-15 21:02:03 所属栏目:安全 来源:网络整理
导读:由于子进程返回Core_kernel.Std.never_returns并且父进程正在尝试返回(),因此我遇到了以下方式执行fork操作的问题. 我得到错误此表达式具有类型单元但是表达式期望类型为Core_kernel.Std.never_returns = Core_kernel.Nothing0.t.似乎无法找到使用Core.Std执
由于子进程返回Core_kernel.Std.never_returns并且父进程正在尝试返回(),因此我遇到了以下方式执行fork操作的问题.
我得到错误此表达式具有类型单元但是表达式期望类型为Core_kernel.Std.never_returns = Core_kernel.Nothing0.t.似乎无法找到使用Core.Std执行此操作的方法. open Core.Std open Unix let () = let prog = "ls" in let args = ["ls"; "-l"] in match Unix.fork () with | `In_the_child -> Unix.exec ~prog:prog ~args:args (); | `In_the_parent _ -> (* continue on with the program *) 解决方法
never_returns类型专门设计为使用never_returns函数.这是要求程序员在代码中清楚地说明,他理解表达式不会终止.这是一个工作示例:
let () = let prog = "ls" in let args = ["ls"; "-l"] in match Unix.fork () with | `In_the_child -> Unix.exec ~prog ~args () |> never_returns | `In_the_parent _ -> () (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |