带有Core_unix.exec的OCaml Core_unix.fork永远不会返回
我在以以下方式执行fork时遇到问题,因为子进程返回一个带有Core_unix.exec的OCaml Core_unix.fork永远不会返回,ocaml,Ocaml,我在以以下方式执行fork时遇到问题,因为子进程返回一个Core\u kernel.Std.never\u返回,而父进程正试图返回() 我得到错误此表达式的类型为unit,但表达式的类型应为Core\u kernel.Std.never\u returns=Core\u kernel.Nothing0.t。似乎找不到合适的方法来使用Core.Std open Core.Std open Unix let () = let prog = "ls" in let args = ["ls"
Core\u kernel.Std.never\u返回
,而父进程正试图返回()
我得到错误此表达式的类型为unit,但表达式的类型应为Core\u kernel.Std.never\u returns=Core\u 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\u returns
类型专门设计用于使用never\u 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 _ -> ()