How to detect a running operating system?

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.

+6
source share
2 answers

The OCaml standard library has a line called Sys.os_type , but it does not contain as much information as uname -a . This is either "Unix" , "Win32" , or "Cygwin" . It is described in the manual entry for the Sys module .

+6
source

NB there is also a wrapper for uname on extunix

+2
source

Source: https://habr.com/ru/post/906625/


All Articles