Spec-Zone.ru › OCaml

Модуль Sys

module Sys: sig .. end

Системный интерфейс.

Каждая функция этого модуля вызывает Sys_error с информативным сообщением, если системный вызов завершается ошибкой.

val argv : string array

Аргументы командной строки, переданные процессу. Первый элемент — имя команды, использованное для вызова программы. Следующие элементы — аргументы командной строки, переданные программе.

val executable_name : string

Имя файла, содержащего исполняемый файл, который выполняется в данный момент. Это имя может быть абсолютным или относительным к текущему каталогу в зависимости от платформы и от того, была ли программа скомпилирована в байт-код или в машинный код.

val runtime_executable : string

Имя файла, содержащего среду выполнения, которая выполняется в данный момент. Для машинного кода это всегда Sys.executable_name, а для байт-кода, например, это может быть ocamlrun. Это имя может быть абсолютным или относительным к текущему каталогу в зависимости от платформы (Linux, Windows и macOS должны возвращать абсолютные пути).

  • С версии 5.5
val file_exists : string -> bool

Проверяет, существует ли файл с заданным именем.

val is_directory : string -> bool

Возвращает true, если заданное имя указывает на каталог, и false, если оно указывает на файл другого типа.

  • С версии 3.10
  • Вызывает исключение Sys_error, если файл с заданным именем не существует.
val is_regular_file : string -> bool

Возвращает true, если заданное имя указывает на обычный файл, и false, если оно указывает на файл другого типа.

  • С версии 5.1
  • Вызывает исключение Sys_error, если файл с заданным именем не существует.
val remove : string -> unit

Удаляет файл с заданным именем из файловой системы.

val rename : string -> string -> unit

Переименовывает файл или каталог. rename oldpath newpath переименовывает файл или каталог с именем oldpath, присваивая ему новое имя newpath и при необходимости перемещая его между родительскими каталогами. Если файл с именем newpath уже существует, его содержимое будет заменено содержимым oldpath. В зависимости от операционной системы метаданные newpath (права доступа, владелец и т. д.) могут быть сохранены или заменены метаданными oldpath.

  • С версии 4.06 — для поведения «заменить существующий файл»
val getenv : string -> string

Возвращает значение переменной из окружения процесса.

  • Вызывает исключение Not_found, если переменная не определена.
val getenv_opt : string -> string option

Возвращает значение переменной из окружения процесса или None, если переменная не определена.

  • С версии 4.05
val command : string -> int

Выполняет заданную команду оболочки и возвращает её код завершения.

Аргумент Sys.command обычно представляет собой имя команды, за которым следуют ноль, один или несколько аргументов, разделённых пробелами. Переданный аргумент интерпретируется оболочкой: оболочкой Windows cmd.exe для портов OCaml под Win32 либо POSIX-оболочкой sh для остальных портов. Он может содержать встроенные команды оболочки, такие как echo, а также специальные символы, например перенаправления файлов > и <, которые будут обработаны оболочкой.

Напротив, пробелы и специальные символы оболочки в именах команд или их аргументах необходимо заключать в кавычки или экранировать, чтобы оболочка не интерпретировала их. Правила заключения в кавычки различаются для POSIX-оболочки и оболочки Windows. Функция Filename.quote_command выполняет необходимое заключение в кавычки для заданных имени команды, списка аргументов и необязательных перенаправлений файлов.

val time : unit -> float

Возвращает процессорное время в секундах, затраченное программой с начала выполнения.

val chdir : string -> unit

Изменяет текущий рабочий каталог процесса.

val mkdir : string -> int -> unit

Создаёт каталог с заданными правами доступа.

  • С версии 4.12
val rmdir : string -> unit

Удаляет пустой каталог.

  • С версии 4.12
val getcwd : unit -> string

Возвращает текущий рабочий каталог процесса.

val readdir : string -> string array

Возвращает имена всех файлов в заданном каталоге. Имена, обозначающие текущий каталог и родительский каталог ("." и ".." в Unix), не возвращаются. Каждая строка в результате — это имя файла, а не полный путь. Порядок имён в результирующем массиве не гарантируется; в частности, они не обязательно будут расположены в алфавитном порядке.

val io_buffer_size : int

Размер буферов C, используемых средой выполнения и примитивами ввода-вывода библиотеки unix.

Примитивы, выполняющие чтение или запись значений типа string или bytes, обычно используют промежуточный буфер этого размера, чтобы не удерживать блокировку домена.

  • С версии 5.4
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-w64),
  • "Cygwin" (для MS-Windows, OCaml, скомпилированный с помощью Cygwin).
type backend_type = 
| Native
| Bytecode
| Other of string

В настоящее время официальный дистрибутив поддерживает только Native и Bytecode, однако с альтернативными компиляторами могут использоваться и другие бэкенды, например JavaScript.

  • С версии 4.04
val backend_type : backend_type

Тип бэкенда, в котором в данный момент выполняется программа OCaml.

  • С версии 4.04
val unix : bool

Истинно, если Sys.os_type = "Unix".

  • С версии 4.01
val win32 : bool

Истинно, если Sys.os_type = "Win32".

  • С версии 4.01
val cygwin : bool

Истинно, если Sys.os_type = "Cygwin".

  • С версии 4.01
val word_size : int

Размер машинного слова на компьютере, выполняющем программу OCaml, в битах: 32 или 64.

val int_size : int

Размер int в битах. При использовании OCaml на 32-разрядной платформе он равен 31, а на 64-разрядной — 63. В других реализациях значение может отличаться; например, при компиляции в JavaScript оно может составлять 32 бита.

  • С версии 4.03
val big_endian : bool

Является ли компьютер, на котором выполняется программа Caml, машиной с порядком байтов от старшего к младшему.

  • С версии 4.00
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

Максимальная длина массива вещественных чисел. Это также максимальная длина float array, если OCaml сконфигурирован с --enable-flat-float-array.

val runtime_variant : unit -> string

Возвращает имя варианта среды выполнения, в котором работает программа. Обычно это аргумент, переданный -runtime-variant во время компиляции, однако для байт-кода его можно изменить после компиляции.

  • С версии 4.03
val runtime_parameters : unit -> string

Возвращает значения параметров среды выполнения в том же формате, что и содержимое переменной окружения OCAMLRUNPARAM.

  • С версии 4.03
val poll_actions : unit -> unit

Выполняет все ожидающие действия среды выполнения, например сборки мусора младшего поколения, этапы сборки мусора старшего поколения, обработчики сигналов, финализаторы или обратные вызовы memprof.

  • С версии 5.3

Обработка сигналов

type signal = int 

Тип для номеров сигналов.

OCaml использует отрицательные числа, чтобы задавать платформонезависимые номера распознаваемых им сигналов. Положительные числа всегда соответствуют платформозависимым значениям для заданного сигнала. Функция Sys.signal_of_int преобразует известные платформозависимые номера в платформонезависимые, а функция Sys.signal_to_int выполняет обратное преобразование.

  • С версии 5.4
type signal_behavior = 
| Signal_default
| Signal_ignore
| Signal_handle of (signal -> unit)

Действие при получении сигнала:

  • Signal_default: использовать поведение по умолчанию (обычно — аварийно завершить программу)
  • Signal_ignore: игнорировать сигнал
  • Signal_handle f: вызвать функцию f, передав ей номер сигнала в качестве аргумента.
val signal : signal -> signal_behavior -> signal_behavior

Задаёт поведение системы при получении заданного сигнала. Первый аргумент — номер сигнала. Возвращает поведение, ранее связанное с этим сигналом. Если номер сигнала недопустим (или сигнал недоступен в вашей системе), вызывается исключение Invalid_argument.

Если используется платформозависимый номер сигнала, перед вызовом обработчика он будет преобразован в платформонезависимый с помощью Sys.signal_of_int.

val set_signal : signal -> signal_behavior -> unit

Аналогична Sys.signal, но возвращаемое значение игнорируется.

Номера стандартных сигналов POSIX.

val sigabrt : signal

Аварийное завершение

val sigalrm : signal

Тайм-аут

val sigfpe : signal

Арифметическая ошибка

val sighup : signal

Обрыв соединения с управляющим терминалом

val sigill : signal

Недопустимая аппаратная инструкция

val sigint : signal

Интерактивное прерывание (ctrl-C)

val sigkill : signal

Завершение (игнорировать невозможно)

val sigpipe : signal

Обрыв канала

val sigquit : signal

Интерактивное завершение

val sigsegv : signal

Недопустимая ссылка на память

val sigterm : signal

Завершение

val sigusr1 : signal

Сигнал 1, определяемый приложением

val sigusr2 : signal

Сигнал 2, определяемый приложением

val sigchld : signal

Дочерний процесс завершён

val sigcont : signal

Продолжение

val sigstop : signal

Остановка (перехватить или игнорировать невозможно)

val sigtstp : signal

Интерактивная остановка

val sigttin : signal

Чтение с терминала фоновым процессом

val sigttou : signal

Запись в терминал фоновым процессом

val sigvtalrm : signal

Тайм-аут виртуального времени

val sigprof : signal

Прерывание профилирования

val sigbus : signal

Ошибка шины

  • С версии 4.03
val sigpoll : signal

Событие, доступное для опроса

  • С версии 4.03
val sigsys : signal

Недопустимый аргумент процедуры

  • С версии 4.03
val sigtrap : signal

Ловушка трассировки/точки останова

  • С версии 4.03
val sigurg : signal

Срочное условие на сокете

  • С версии 4.03
val sigxcpu : signal

Тайм-аут процессорного времени

  • С версии 4.03
val sigxfsz : signal

Превышено ограничение размера файла

  • С версии 4.03
val sigio : signal

Дескриптор доступен для ввода-вывода

  • С версии 5.4
val sigwinch : signal

Изменение размера окна

  • С версии 5.4
val signal_to_string : signal -> string

signal_to_string форматирует сигнал OCaml signal как константу C POSIX constant или "SIG(%d)" для платформозависимых номеров сигналов.

  • С версии 5.4
  • Вызывает исключение Invalid_argument для нераспознанных отрицательных чисел.
val signal_of_int : int -> signal

signal_of_int n преобразует платформозависимый номер сигнала n в номер сигнала OCaml.

Для положительных значений n это само значение n, если в OCaml нет платформонезависимого номера сигнала для n.

  • С версии 5.4
  • Вызывает исключение Invalid_argument, если n отрицательно.
val signal_to_int : signal -> int

signal_to_int n преобразует номер сигнала OCaml n в платформозависимый номер сигнала.

Для положительных значений n это само значение n.

  • С версии 5.4
  • Вызывает исключение Invalid_argument для нераспознанных отрицательных чисел.
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 в противном случае.

  • С версии 4.14
type extra_prefix = 
| Plus
| Tilde
type extra_info = extra_prefix * string 
  • С версии 4.14
type ocaml_release_info = {
major : int;
minor : int;
patchlevel : int;
extra : extra_info option;
}
  • С версии 4.14
val ocaml_release : ocaml_release_info

ocaml_release — версия OCaml.

  • С версии 4.14
val enable_runtime_warnings : bool -> unit

Управляет тем, может ли среда выполнения OCaml выводить предупреждения в stderr. В настоящее время поддерживается только предупреждение, возникающее, когда канал, созданный функциями open_*, финализируется без закрытия. По умолчанию предупреждения среды выполнения отключены.

  • С версии 4.03
  • Предупреждение unsynchronized_access. Состояние предупреждений среды выполнения — изменяемое глобальное состояние.
val runtime_warnings_enabled : unit -> bool

Возвращает, включены ли в данный момент предупреждения среды выполнения.

  • С версии 4.03
  • Предупреждение 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
    
  • С версии 4.03
module Immediate64: sig .. end

© 1995-2026 INRIA.
https://ocaml.org/manual/5.5/api/Sys.html

Spec-Zone.ru

Настройки Оффлайн Что нового Помощь О нас
Spec-Zone .ru
спецификации, руководства, описания, API