2012-01-23 18 views
6

Jak wykryć typ systemu/system operacyjny w OCaml?Jak wykrywać działający system operacyjny?

Mój obecny pomysł jest naprawdę dziwny. Uruchamianie wywołanie systemowe: "uname -a" z

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) 

nawet na Cygwin ...

Ale myślę, że musi być jakiś rodzimy dla SML sposób sprawdzić typ systemu.

Odpowiedz

6

Standardowa biblioteka OCaml ma ciąg o nazwie Sys.os_type, ale nie zawiera ona tak wielu informacji, jak uname -a. Jest to "Unix", "Win32" lub "Cygwin". Jest to opisane w the manual entry for the Sys module.

Powiązane problemy