Глава 32. Библиотека unix: системные вызовы Unix
Библиотека unix предоставляет программам на OCaml доступ ко многим системным вызовам Unix и связанным с системой библиотечным функциям. В этой главе кратко описаны предоставляемые функции. Подробнее об их поведении см. разделы 2 и 3 руководства Unix.
- Модуль Unix: системные вызовы Unix
- Модуль UnixLabels: системные вызовы Unix с метками
Не все функции доступны во всех вариантах Unix. При вызове недоступные функции вызывают исключение Invalid_arg.
Программы, использующие библиотеку unix, необходимо компоновывать следующим образом:
ocamlc other options -I +unix unix.cma other files
ocamlopt other options -I +unix unix.cmxa other files
Для интерактивного использования библиотеки unix выполните:
ocamlmktop -o mytop -I +unix unix.cma
./mytop
или (если на вашей платформе поддерживается динамическая компоновка библиотек C) запустите ocaml и введите
# #directory "+unix";;
# #load "unix.cma";;
Windows: Порт OCaml для Cygwin полностью реализует все функции модуля Unix. Нативные порты Win32 реализуют лишь часть из них. Ниже приведён список функций, которые в портах Win32 не реализованы или реализованы лишь частично. Функции, не упомянутые в списке, полностью реализованы и работают так, как описано выше в этой главе.
| Функции | Комментарий |
| fork | не реализована; используйте create_process или потоки |
| wait | не реализована; используйте waitpid |
| waitpid | может ожидать завершения только указанного PID, но не любого дочернего процесса |
| getppid | не реализована (не имеет смысла в Windows) |
| nice | не реализована |
| truncate, ftruncate | реализованы (начиная с версии 4.10.0) |
| link | реализована (начиная с версии 3.02) |
| fchmod | не реализована |
| chown, fchown | не реализованы (не имеют смысла в файловой системе DOS) |
| umask | не реализована |
| access | право на выполнение X_OK проверить нельзя: вместо этого проверяется право на чтение |
| chroot | не реализована |
| mkfifo | не реализована |
| symlink, readlink | реализованы (начиная с версии 4.03.0) |
| kill | реализована частично (начиная с версии 4.00.0): реализован только сигнал sigkill |
| sigprocmask, sigpending, sigsuspend | не реализованы (в Windows нет межпроцессных сигналов) |
| pause | не реализована (в Windows нет межпроцессных сигналов) |
| alarm | не реализована |
| times | реализована частично, не возвращает данные о времени выполнения дочерних процессов |
| getitimer, setitimer | не реализованы |
| getuid, geteuid, getgid, getegid | всегда возвращают 1 |
| setuid, setgid, setgroups, initgroups | не реализованы |
| getgroups | всегда возвращает [|1|] (начиная с версии 2.00) |
| getpwnam, getpwuid | всегда вызывают исключение Not_found |
| getgrnam, getgrgid | всегда вызывают исключение Not_found |
| тип socket_domain | PF_INET полностью поддерживается; PF_INET6 полностью поддерживается (начиная с версии 4.01.0); PF_UNIX поддерживается начиная с версии 4.14.0, но работает только в Windows 10 1803 и более поздних версиях. |
| establish_server | не реализована; используйте потоки |
| функции работы с терминалом (tc*) | не реализованы |
| setsid | не реализована |
Авторское право © 2026 Национальный институт исследований в области информатики и автоматики
© 1995-2026 INRIA.
https://ocaml.org/manual/5.5/libunix.html