2012-01-23 21 views
6

Làm thế nào tôi có thể phát hiện loại hệ thống/hệ điều hành trong OCaml?Làm cách nào để phát hiện hệ điều hành đang chạy?

Ý tưởng hiện tại của tôi thực sự kỳ lạ. Chạy cuộc gọi hệ thống: "uname -a" với

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) 

ngay cả trên Cygwin ...

Nhưng tôi đoán thì phải có một số bản địa cho cách ocaml để kiểm tra loại hệ thống.

Trả lời

6

Thư viện chuẩn OCaml có một chuỗi có tên là Sys.os_type, nhưng không chứa nhiều thông tin như uname -a. Đây là "Unix", "Win32" hoặc "Cygwin". Nó được mô tả trong the manual entry for the Sys module.

Các vấn đề liên quan