unix 库为 OCaml 程序提供了许多 Unix 系统调用和系统相关的库函数。本章简要介绍了提供的函数。有关这些函数行为的更多详细信息,请参阅 Unix 手册的第 2 和 3 节。
并非所有 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 并键入
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 | 未实现 |