module Sys:sig
..end
系統介面。
當底層系統呼叫發出錯誤訊號時,此模組中的每個函式都會引發含有資訊性訊息的 Sys_error
。
val argv : string array
給予程序的命令列引數。第一個元素是調用程式時使用的命令名稱。接下來的元素是給予程式的命令列引數。
val executable_name : string
包含目前正在執行的可執行檔的檔案名稱。此名稱可能是絕對路徑或相對於目前目錄的路徑,取決於平台以及程式是編譯為位元組碼還是原生可執行檔。
val file_exists : string -> bool
測試具有給定名稱的檔案是否存在。
val is_directory : string -> bool
如果給定名稱是指目錄則傳回 true
,如果是指另一種檔案則傳回 false
。
Sys_error
。val is_regular_file : string -> bool
如果給定名稱是指常規檔案則傳回 true
,如果是指另一種檔案則傳回 false
。
Sys_error
。val remove : string -> unit
從檔案系統移除給定的檔案名稱。
val rename : string -> string -> unit
重新命名檔案或目錄。rename oldpath newpath
重新命名名為 oldpath
的檔案或目錄,給予它 newpath
作為其新名稱,並在需要時在(父)目錄之間移動。如果已存在名為 newpath
的檔案,則其內容將被 oldpath
的內容取代。根據作業系統,newpath
的中繼資料(權限、擁有者等)可以保留或被 oldpath
的中繼資料取代。
val getenv : string -> string
傳回程序環境中與變數相關聯的值。
Not_found
。val getenv_opt : string -> string option
傳回程序環境中與變數相關聯的值,如果變數未繫結則傳回 None
。
val command : string -> int
執行給定的 shell 命令並傳回其結束代碼。
Sys.command
的引數通常是命令的名稱,後面接著零個、一個或數個引數,以空白分隔。給定的引數由 shell 解譯:對於 OCaml 的 Win32 連接埠,是 Windows shell cmd.exe
,對於其他連接埠,是 POSIX shell sh
。它可以包含 shell 內建命令,例如 echo
,以及特殊字元,例如檔案重新導向 >
和 <
,這些字元將由 shell 處理。
反之,命令名稱或其引數中出現的空白或特殊 shell 字元必須加上引號或逸出,以使 shell 不會解譯它們。Filename.quote_command
根據命令名稱、引數列表和選用的檔案重新導向執行適當的引號處理。
val time : unit -> float
傳回自執行開始以來程式使用的處理器時間,以秒為單位。
val chdir : string -> unit
變更程序的目前工作目錄。
val mkdir : string -> int -> unit
使用給定的權限建立目錄。
val rmdir : string -> unit
移除空的目錄。
val getcwd : unit -> string
傳回程序的目前工作目錄。
val readdir : string -> string array
傳回給定目錄中存在的所有檔案的名稱。不傳回表示目前目錄和父目錄的名稱(在 Unix 中為 "."
和 ".."
)。結果中的每個字串都是檔案名稱,而不是完整路徑。無法保證結果陣列中的名稱字串將以任何特定順序出現;特別是,不保證它們會以字母順序出現。
val interactive : bool ref
此參考在獨立程式中最初設定為 false
,如果在互動式頂層系統 ocaml
下執行程式碼,則設定為 true
。
val os_type : string
目前執行 OCaml 程式的作業系統。下列之一:
"Unix"
(適用於所有 Unix 版本,包括 Linux 和 Mac OS X),"Win32"
(適用於 MS-Windows,使用 MSVC++ 或 MinGW-w64 編譯的 OCaml),"Cygwin"
(適用於 MS-Windows,使用 Cygwin 編譯的 OCaml)。type
backend_type =
| |
原生 |
| |
位元組碼 |
| |
Other of |
目前,官方發行版僅支援 Native
和 Bytecode
,但它可以是具有替代編譯器的其他後端,例如,javascript。
val backend_type : backend_type
目前執行 OCaml 程式的後端類型。
val unix : bool
如果 Sys.os_type = "Unix"
則為 True。
val win32 : bool
如果 Sys.os_type = "Win32"
則為 True。
val cygwin : bool
如果 Sys.os_type = "Cygwin"
則為 True。
val word_size : int
目前執行 OCaml 程式的機器上一個字的大小,以位元為單位:32 或 64。
val int_size : int
int
的大小,以位元為單位。在 32 位元(resp. 64 位元)平台上使用 OCaml 時,它為 31(resp. 63)。對於其他實作可能會有所不同,例如,在編譯為 JavaScript 時它可以是 32 位元。
val big_endian : bool
目前執行 Caml 程式的機器是否為大端位元組序。
val max_string_length : int
字串和位元組序列的最大長度。
val max_array_length : int
正常陣列(即,元素類型不是 float
的任何陣列)的最大長度。float array
的最大長度為 max_floatarray_length
(如果 OCaml 設定為 --enable-flat-float-array
)和 max_array_length
(如果設定為 --disable-flat-float-array
)。
val max_floatarray_length : int
浮點數陣列的最大長度。這也是當 OCaml 設定為 --enable-flat-float-array
時 float array
的最大長度。
val runtime_variant : unit -> string
傳回程式正在執行的執行階段變體的名稱。這通常是在編譯時給予 -runtime-variant
的引數,但對於位元組碼,它可以在編譯後變更。
val runtime_parameters : unit -> string
傳回執行階段參數的值,格式與 OCAMLRUNPARAM
環境變數的內容相同。
type
signal_behavior =
| |
Signal_default |
| |
Signal_ignore |
| |
Signal_handle of |
收到訊號時該怎麼做
Signal_default
:採取預設行為(通常:中止程式)Signal_ignore
:忽略訊號Signal_handle f
:呼叫函式 f
,並將訊號編號作為引數傳遞給它。val signal : int -> signal_behavior -> signal_behavior
設定系統在收到給定訊號時的行為。第一個引數是訊號編號。傳回先前與訊號相關聯的行為。如果訊號編號無效(或在您的系統上不可用),則會引發 Invalid_argument
例外狀況。
val set_signal : int -> signal_behavior -> unit
與 Sys.signal
相同,但會忽略傳回值。
val sigabrt : int
異常終止
val sigalrm : int
逾時
val sigfpe : int
算術例外
val sighup : int
控制終端機的掛斷
val sigill : int
無效的硬體指令
val sigint : int
互動式中斷 (ctrl-C)
val sigkill : int
終止(無法忽略)
val sigpipe : int
斷開的管道
val sigquit : int
互動式終止
val sigsegv : int
無效的記憶體參考
val sigterm : int
終止
val sigusr1 : int
應用程式定義的訊號 1
val sigusr2 : int
應用程式定義的訊號 2
val sigchld : int
子程序已終止
val sigcont : int
繼續
val sigstop : int
停止
val sigtstp : int
互動式停止
val sigttin : int
從背景程序讀取終端機
val sigttou : int
從背景程序寫入終端機
val sigvtalrm : int
虛擬時間逾時
val sigprof : int
分析中斷
val sigbus : int
匯流排錯誤
val sigpoll : int
可輪詢事件
val sigsys : int
例程的錯誤引數
val sigtrap : int
追蹤/中斷點陷阱
val sigurg : int
插槽上的緊急狀況
val sigxcpu : int
CPU 時間逾時
val sigxfsz : int
超出檔案大小限制
exception Break
如果啟用 Sys.catch_break
,則在互動式中斷時引發例外狀況。
val catch_break : bool -> unit
catch_break
控制互動式中斷 (ctrl-C) 是終止程式還是引發 Break
例外狀況。呼叫 catch_break true
以啟用引發 Break
,並呼叫 catch_break false
以讓系統在使用者中斷時終止程式。
在多執行緒程式中,Break
例外狀況將出現在任何一個活動執行緒中,並在進一步的互動式中斷時持續出現,直到所有執行緒都終止。使用來自 Thread.sigmask
的訊號遮罩將中斷導向特定執行緒。
val ocaml_version : string
ocaml_version
是 OCaml 的版本。它是 "major.minor[.patchlevel][(+|~)additional-info]"
形式的字串,其中 major
、minor
和 patchlevel
是整數,而 additional-info
是任意字串。在 3.08.0 版本之前沒有 [.patchlevel]
部分,並且從 3.08.0 版本開始變為強制性的。[(+|~)additional-info]
部分可能不存在。
val development_version : bool
如果這是開發版本則為 true
,否則為 false
。
type
extra_prefix =
| |
加號 |
| |
波浪號 |
typeextra_info =
extra_prefix * string
type
ocaml_release_info = {
|
major : |
|
minor : |
|
patchlevel : |
|
extra : |
}
val ocaml_release : ocaml_release_info
ocaml_release
是 OCaml 的版本。
val enable_runtime_warnings : bool -> unit
控制 OCaml 執行階段系統是否可以在 stderr 上發出警告。目前,唯一支援的警告是在由 open_*
函式建立的通道在未關閉的情況下完成時觸發的警告。預設情況下會停用執行階段警告。
val runtime_warnings_enabled : unit -> bool
傳回目前是否已啟用執行階段警告。
val opaque_identity : 'a -> 'a
為了最佳化的目的,opaque_identity
的行為類似於未知(因此可能具有副作用)的函式。
在執行階段,opaque_identity
會完全消失。
此函式的典型用途是防止在基準迴圈中將純粹的計算最佳化掉。例如
for _round = 1 to 100_000 do
ignore (Sys.opaque_identity (my_pure_computation ()))
done
module Immediate64:sig
..end