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"
,则为真。
val win32 : bool
如果 Sys.os_type = "Win32"
,则为真。
val cygwin : bool
如果 Sys.os_type = "Cygwin"
,则为真。
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
的任何数组)的最大长度。float array
的最大长度为 max_floatarray_length
(如果 OCaml 使用 --enable-flat-float-array
配置),或者为 max_array_length
(如果使用 --disable-flat-float-array
配置)。
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
套接字上的紧急情况
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
是任意字符串。[.patchlevel]
部分在 3.08.0 版本之前不存在,从 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