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 : 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
套接字上的紧急情况
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