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 不解释它们。引号规则在 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 : intint 的大小(以位计)。在 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 : intfloatarray 的最大长度。当 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 : intCPU 时间超时
val sigxfsz : int文件大小限制超出
exception Break
如果启用 Sys.catch_break,则在交互式中断时引发的异常。
val catch_break : bool -> unitcatch_break 控制交互式中断(ctrl-C)是否终止程序或引发 Break 异常。调用 catch_break true 以启用引发 Break,调用 catch_break false 以让系统在用户中断时终止程序。
在多线程程序中,Break 异常将出现在任何一个活动线程中,并且在所有线程终止之前,将在后续的交互式中断中持续出现。使用来自 Thread.sigmask 的信号掩码将中断引导到特定线程。
val ocaml_version : stringocaml_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_infoocaml_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