module Sys: Sys
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 不會解釋它們。引號規則在 POSIX shell 和 Windows 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 位元(分別為 64 位元)平台上使用 OCaml 時,它為 31(分別為 63)。對於其他實作,它可能會有所不同,例如,編譯為 JavaScript 時,它可能是 32 位元。
val big_endian : bool
目前執行 Caml 程式的機器是否為大端。
val max_string_length : int
字串和位元組序列的最大長度。
val max_array_length : int
一般陣列(即元素類型不是 float
的任何陣列)的最大長度。如果 OCaml 是使用 --enable-flat-float-array
設定的,則 float array
的最大長度為 max_floatarray_length
,如果使用 --disable-flat-float-array
設定,則為 max_array_length
。
val max_floatarray_length : int
floatarray 的最大長度。當 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
Socket 上的緊急情況
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