Модуль 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.
- Предупреждение unsynchronized_access. Интерактивный статус — это изменчивое глобальное состояние.
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
- Since 4.14
type ocaml_release_info = {
major :
| |
minor :
| |
patchlevel :
| |
extra :
|
} - Since 4.14
val ocaml_release : ocaml_release_info
ocaml_release — это версия OCaml.
- Since 4.14
val enable_runtime_warnings : bool -> unit
Управление тем, может ли система выполнения OCaml генерировать предупреждения в stderr. В настоящее время поддерживается только одно предупреждение, которое срабатывает, когда канал, созданный функциями open_*, завершается без закрытия. Предупреждения системы выполнения по умолчанию отключены.
- Since 4.03.0
- Предупреждение unsynchronized_access. Статус предупреждений выполнения — это изменяемое глобальное состояние.
val runtime_warnings_enabled : unit -> bool
Возвращает, включены ли в данный момент предупреждения системы выполнения.
- Since 4.03.0
- Предупреждение unsynchronized_access. Статус предупреждений выполнения — это изменяемое глобальное состояние.
Оптимизация
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/5.0/htmlman/libref/Sys.html