Spec-Zone.ru › OCaml

Модуль 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
  • Raises Sys_error если файл с заданным именем не существует.
val is_regular_file : string -> bool

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

  • Since 5.1
  • 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
val rmdir : string -> unit

Удаление пустого каталога.

  • Since 4.12
val getcwd : unit -> string

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

val readdir : string -> string array

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

val interactive : bool ref

Эта ссылка изначально установлена на false в автономных программах и на true если код выполняется в интерактивной системе верхнего уровня ocaml.

  • Alert 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.

  • Since 4.04
val backend_type : backend_type

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

  • Since 4.04
val unix : bool

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

  • Since 4.01
val win32 : bool

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

  • Since 4.01
val cygwin : bool

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

  • Since 4.01
val word_size : int

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

val int_size : int

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

  • Since 4.03
val big_endian : bool

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

  • Since 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. Это также максимальная длина float array когда OCaml сконфигурирован с --enable-flat-float-array.

val runtime_variant : unit -> string

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

  • Since 4.03
val runtime_parameters : unit -> string

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

  • Since 4.03

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

type signal_behavior = 
| Signal_default
| Signal_ignore
| Signal_handle of (int -> unit)

Что делать при получении сигнала:

  • 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, чтобы позволить системе завершить программу при прерывании пользователя.

Внутри многопоточных программ исключение 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 в противном случае.

  • Since 4.14
type extra_prefix = 
| Plus
| Tilde
type extra_info = extra_prefix * string 
  • Since 4.14
type ocaml_release_info = {
major : int;
minor : int;
patchlevel : int;
extra : extra_info option;
}
  • 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
  • Предупреждение unsynchronized_access. Статус предупреждений системы выполнения — это изменяемое глобальное состояние.
val runtime_warnings_enabled : unit -> bool

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

  • Since 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
    
  • Since 4.03
module Immediate64: sig .. end

© 1995-2024 INRIA.
https://ocaml.org/manual/5.2/api/Sys.html

Spec-Zone.ru

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