How to determine the system type / operating system in OCaml?
My current idea is really strange. Starting a system call: "uname -a" with
let syscall ?(env=[| |]) cmd = let ic, oc, ec = Unix.open_process_full cmd env in let buf1 = Buffer.create 96 and buf2 = Buffer.create 48 in (try while true do Buffer.add_channel buf1 ic 1 done with End_of_file -> ()); (try while true do Buffer.add_channel buf2 ec 1 done with End_of_file -> ()); let exit_status = Unix.close_process_full (ic, oc, ec) in check_exit_status exit_status; (Buffer.contents buf1, Buffer.contents buf2)
even on cygwin ...
But I assume that the ocaml method must be built in to check the type of system.
source share