Unix モジュールの fork 関数を呼ぶと、 fork 前のトップレベルの式が再度実行されてしまいます。 fork 前のコードを fork 後に実行されないようにしたいのですが、どう修正すればよいのでしょうか。

コード:

let () =
  Printf.printf "hello, world!\n";
  ignore @@ Unix.fork ()

実行結果 (ネイティブコードにコンパイルしての実行です):

hello, world!
hello, world!

実行環境:

  • Mac OS X 10.2.5
  • OCaml 4.04.2