Модуль Sys
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 если оно относится к другому типу файла.
- Since 3.10.0
-
Raises
Sys_errorесли файл с заданным именем не существует.
val remove : string -> unit
Удаление заданного имени файла из файловой системы.
val rename : string -> string -> unit
Переименование файла. rename oldpath newpath переименовывает файл с именем oldpath, присваивая ему новое имя newpath, перемещая его между каталогами при необходимости. Если newpath уже существует, его содержимое будет заменено содержимым oldpath. В зависимости от операционной системы метаданные (разрешения, владелец и т. д.) файла newpath могут быть сохранены или заменены метаданными файла oldpath.
- Since 4.06, касательно поведения "замены существующего файла"
val getenv : string -> string
Возвращает значение, связанное с переменной в среде процесса.
-
Raises
Not_foundесли переменная не определена.
val getenv_opt : string -> string option
Возвращает значение, связанное с переменной в среде процесса, или None если переменная не определена.
- Since 4.05
val command : string -> int
Выполнение заданной оболочкой команды и возврат её кода выхода.
Аргумент Sys.command обычно представляет собой имя команды, за которым следуют ноль, один или несколько аргументов, разделённых пробелами. Заданный аргумент интерпретируется оболочкой: либо оболочкой Windows cmd.exe для портов Win32 OCaml, либо оболочкой POSIX sh для других портов. Он может содержать команды оболочки, такие как echo, а также специальные символы, такие как перенаправления файлов > и <, которые будут учтены оболочкой.
Наоборот, пробелы или специальные символы оболочки, встречающиеся в именах команд или их аргументах, должны быть заключены в кавычки или экранированы, чтобы оболочка их не интерпретировала. Правила цитирования отличаются между оболочкой POSIX и оболочкой Windows. Filename.quote_command выполняет соответствующее цитирование, учитывая имя команды, список аргументов и необязательные перенаправления файлов.
val time : unit -> float
Возвращает процессорное время, затраченное программой в секундах, с момента начала выполнения.
val chdir : string -> unit
Изменение текущего каталога работы процесса.
val mkdir : string -> int -> unit
Создание каталога с заданными разрешениями.
- Since 4.12.0
val rmdir : string -> unit
Удаление пустого каталога.
- Since 4.12.0
val getcwd : unit -> string
Возвращение текущего каталога работы процесса.
val readdir : string -> string array
Возвращает имена всех файлов, присутствующих в заданном каталоге. Имена, обозначающие текущий каталог и родительский каталог ("." и ".." в Unix), не возвращаются. Каждая строка в результате является именем файла, а не полным путем. Нет гарантии, что строки имён в результирующем массиве будут появляться в каком-либо конкретном порядке; они, в частности, не гарантируют появление в алфавитном порядке.
val interactive : bool ref
Эта ссылка изначально установлена на false в автономных программах и на true если код выполняется в интерактивной системе верхнего уровня ocaml.
val os_type : string
Операционная система, в которой в данный момент выполняется программа OCaml. Одна из
-
"Unix"(для всех версий Unix, включая Linux и Mac OS X), -
"Win32"(для MS-Windows, OCaml, скомпилированный с MSVC++ или Mingw), -
"Cygwin"(для MS-Windows, OCaml, скомпилированный с Cygwin).
type backend_type =
|
| Native
|
|
| Bytecode
|
|
| Other of
|
В настоящее время официальное распределение поддерживает только Native и Bytecode, но это могут быть другие бэкэнды с альтернативными компиляторами, например, javascript.
- Since 4.04.0
val backend_type : backend_type
Тип бэкэнда, который в данный момент выполняет программу OCaml.
- Since 4.04.0
val unix : bool
Истина, если Sys.os_type = "Unix".
- Since 4.01.0
val win32 : bool
Истина, если Sys.os_type = "Win32".
- Since 4.01.0
val cygwin : bool
Истина, если Sys.os_type = "Cygwin".
- Since 4.01.0
val word_size : int
Размер одного слова на машине, которая в данный момент выполняет программу OCaml, в битах: 32 или 64.
val int_size : int
Размер int, в битах. Он равен 31 (соответственно 63) при использовании OCaml на 32-битной (соответственно 64-битной) платформе. Он может отличаться для других реализаций, например, он может составлять 32 бита при компиляции в JavaScript.
- Since 4.03.0
val big_endian : bool
Является ли машина, которая в данный момент выполняет программу Caml, большого порядка.
- Since 4.00.0
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. Это также максимальная длина float array при конфигурации OCaml с --enable-flat-float-array.
val runtime_variant : unit -> string
Возвращает имя варианта выполнения, на котором работает программа. Обычно это аргумент, переданный -runtime-variant во время компиляции, но для байткода он может быть изменён после компиляции.
- Since 4.03.0
val runtime_parameters : unit -> string
Возвращает значение параметров выполнения в том же формате, что и содержимое переменной среды OCAMLRUNPARAM.
- Since 4.03.0
Обработка сигналов
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, но значение возврата игнорируется.
Номера сигналов для стандартных сигналов POSIX.
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
Ошибка шины
- Since 4.03
val sigpoll : int
Опрашиваемое событие
- Since 4.03
val sigsys : int
Неправильный аргумент для процедуры
- Since 4.03
val sigtrap : int
Перехват отладки/точки останова
- Since 4.03
val sigurg : int
Неотложное состояние в сокете
- Since 4.03
val sigxcpu : int
Таймаут во времени процессора
- Since 4.03
val sigxfsz : int
Превышен лимит размера файла
- Since 4.03
exception Break
Исключение, сгенерированное при взаимодействии прерывания, если Sys.catch_break включено.
val catch_break : bool -> unit
catch_break определяет, завершает ли взаимодействующее прерывание (ctrl-C) программу или генерирует исключение Break. Вызов catch_break true для включения генерации Break, и catch_break false для того, чтобы система завершала программу при прерывании пользователя.
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 в противном случае.
- Since 4.14.0
type extra_prefix =
|
| Plus
|
|
| Tilde
|
type extra_info = extra_prefix * string
type ocaml_release_info = {
major :
| |
minor :
| |
patchlevel :
| |
extra :
|
} val ocaml_release : ocaml_release_info
val enable_runtime_warnings : bool -> unit
Управление тем, может ли система выполнения OCaml генерировать предупреждения в stderr. В настоящее время единственное поддерживаемое предупреждение генерируется, когда канал, созданный функциями open_*, завершается без закрытия. Временные предупреждения отключены по умолчанию.
- Since 4.03.0
val runtime_warnings_enabled : unit -> bool
Возвращает, включены ли в настоящее время временные предупреждения.
- Since 4.03.0
Оптимизация
val opaque_identity : 'a -> 'a
Для целей оптимизации, opaque_identity ведет себя как неизвестная (и, следовательно, потенциально вызывающая побочные эффекты) функция.
Во время выполнения opaque_identity полностью исчезает.
Типичное использование этой функции - предотвращение оптимизации чистых вычислений в циклах бенчмаркинга. Например:
for _round = 1 to 100_000 do
ignore (Sys.opaque_identity (my_pure_computation ()))
done
- Since 4.03.0
module Immediate64: sig .. end
© 1995-2022 INRIA.
https://v2.ocaml.org/releases/4.14/htmlman/libref/Sys.html