Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/google-cloud-platform/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
带有Core_unix.exec的OCaml Core_unix.fork永远不会返回_Ocaml - Fatal编程技术网

带有Core_unix.exec的OCaml Core_unix.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"

我在以以下方式执行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"; "-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 _ -> ()