2012-01-23 10 views
6

OCamlでシステムタイプ/オペレーティングシステムを検出するにはどうすればよいですか?実行中のオペレーティングシステムを検出する方法は?

私の現在のアイデアは本当に奇妙です。システムコールの実行:

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) 

"uname -a"でもcygwinの上...

をしかし、私は、システムの種類を確認するにはocamlの方法のためのいくつかのネイティブがなければならないと思います。

答えて

6

標準OCamlライブラリにはSys.os_typeという文字列がありますが、それにはuname -aという情報は含まれていません。 "Unix"、、または"Cygwin"のいずれかです。それはthe manual entry for the Sys moduleに記載されています。

関連する問題