Lwt_main.run実行中にシグナルを受けたら後処理をして停止したい
let rec f _ = ignore (Lwt_unix.sleep 1.0);
f ()
let _ = Lwt_unix.on_signal 2 (fun _ -> print_endline "sig")
let _ =
print_endline "start";
ignore (Lwt_main.at_exit (fun () -> Lwt.return(print_endline "at_exit")));
Lwt_main.run (f ())
上記のように書いてみましたが、Ctrl-CでSIGINTを送っても割り込めないようです。
きちんと割り込めるやり方か、at_exitと共通化できるようなもっと良い方法があれば教えて下さい。
環境はOCaml4.02.1, lwt2.4.8です。