Глава 31 Библиотека unix: системные вызовы Unix
Библиотека unix предоставляет доступ к многим системным вызовам Unix и функциям системных библиотек для программ OCaml. В этой главе кратко описаны предоставляемые функции. Более подробную информацию о поведении этих функций см. в разделах 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 | не реализовано |
Авторские права © 2024 Institut National de Recherche en Informatique et en Automatique
© 1995-2024 INRIA.
https://ocaml.org/manual/5.2/libunix.html