Chapter 25 The unix library: Unix system calls
The unix library makes many Unixsystem calls and system-related library functions available toOCaml programs. This chapter describes briefly the functionsprovided. Refer to sections 2 and 3 of the Unix manual for moredetails on the behavior of these functions.
- Module Unix: Unix system calls
- Module UnixLabels: LabeledUnix system callsNot all functions are provided by all Unix variants. If some functionsare not available, they will raise Invalid_arg when called.
Programs that use the unix library must be linked as follows:
- ocamlc other options unix.cma other files
- ocamlopt other options unix.cmxa other files
For interactive use of the unix library, do:
- ocamlmktop -o mytop unix.cma
- ./mytop
or (if dynamic linking of C libraries is supported on your platform),start ocaml and type #load "unix.cma";;.
Windows:A fairly complete emulation of the Unix system calls is provided inthe Windows version of OCaml. The end of this chapter givesmore information on the functions that are not supported under Windows.
Windows:The Cygwin port of OCaml fully implements all functions fromthe Unix module. The native Win32 ports implement a subset of them.Below is a list of the functions that are not implemented, or onlypartially implemented, by the Win32 ports. Functions not mentioned arefully implemented and behave as described previously in this chapter.
Functions Comment fork not implemented, use create_process or threads wait not implemented, use waitpid waitpid can only wait for a given PID, not any child process getppid not implemented (meaningless under Windows) nice not implemented truncate, ftruncate not implemented link implemented (since 3.02) symlink, readlink implemented (since 4.03.0) access execute permission X_OK cannot be tested,it just tests for read permission instead fchmod not implemented chown, fchown not implemented (make no sense on a DOSfile system) umask not implemented mkfifo not implemented kill partially implemented (since 4.00.0): only the sigkill signalis implemented pause not implemented (no inter-process signals in Windows) alarm not implemented times partially implemented, will not report timings for childprocesses getitimer, setitimer not implemented getuid, geteuid, getgid, getegid always return 1 getgroups always returns [|1|] (since 2.00) setuid, setgid, setgroups not implemented getpwnam, getpwuid always raise Not_found getgrnam, getgrgid always raise Not_found type socket_domain PF_INET is fully supported;PF_INET6 is fully supported (since 4.01.0); PF_UNIX is not supported establish_server not implemented; use threads terminal functions (tc*) not implemented