package extunix

  1. Overview
  2. Docs
exception Not_available of string

Not_available "symbol" may be raised by ExtUnix.All.func if the wrapped C function or constant is not available on this platform.

ExtUnix.Specific includes only functions available on the current platform and will not raise Not_available. Note that libc wrappers underlying ExtUnix.Specific functions may still raise ENOSYS (Not implemented) error even though the function is available.

type ('a, 'b) carray = ('a, 'b, Bigarray.c_layout) Bigarray.Array1.t

type of bigarray used by BA submodules that read from files into bigarrays or write bigarrays into files. The only constraint here is Bigarray.c_layout. Naming: "bigarray with C layout" -> "carray".

type of bigarray used by BA submodules that work with endianness and memory. Constraints are: 1. Bigarray.c_layout, 2. bigarray contains 8-bit integers. Naming: "bigarray with C layout and 8-bit elements" -> "carray8".

type open_flag = Unix.open_flag
val eventfd : int -> Unix.file_descr
val eventfd_read : Unix.file_descr -> int64
val eventfd_write : Unix.file_descr -> int64 -> unit
module Uname : sig ... end

Author: Sylvain Le Gall sylvain\@le-gall.net

val uname : unit -> Uname.t
val fsync : Unix.file_descr -> unit

synchronize a file's in-core state with storage device

val fdatasync : Unix.file_descr -> unit
val sync : unit -> unit

causes all buffered modifications to file metadata and data to be written to the underlying file systems

val syncfs : Unix.file_descr -> unit

like sync, but synchronizes just the file system containing file referred to by the open file descriptor fd

type st_flag =
  1. | ST_RDONLY
  2. | ST_NOSUID
  3. | ST_NODEV
  4. | ST_NOEXEC
  5. | ST_SYNCHRONOUS
  6. | ST_MANDLOCK
  7. | ST_WRITE
  8. | ST_APPEND
  9. | ST_IMMUTABLE
  10. | ST_NOATIME
  11. | ST_NODIRATIME
  12. | ST_RELATIME

file system flags

type statvfs = {
  1. f_bsize : int;
    (*

    file system block size

    *)
  2. f_blocks : int64;
    (*

    size of file system in blocks

    *)
  3. f_bfree : int64;
    (*

    free blocks

    *)
  4. f_bavail : int64;
    (*

    free blocks for unprivileged users

    *)
  5. f_files : int64;
    (*

    inodes

    *)
  6. f_ffree : int64;
    (*

    free inodes

    *)
  7. f_favail : int64;
    (*

    free inodes for unprivileged users

    *)
  8. f_fsid : int64;
    (*

    file system ID

    *)
  9. f_flag : int;
    (*

    mount flags (raw value)

    *)
  10. f_flags : st_flag list;
    (*

    mount flags (decoded)

    *)
  11. f_namemax : int;
}

Update atime relative to mtime/ctime.

val statvfs : string -> statvfs

maximum filename length

val fstatvfs : Unix.file_descr -> statvfs
type at_flag =
  1. | AT_EACCESS
  2. | AT_REMOVEDIR
  3. | AT_NO_AUTOMOUNT
val openat : Unix.file_descr -> string -> open_flag list -> Unix.file_perm -> Unix.file_descr
val fstatat : Unix.file_descr -> string -> at_flag list -> Unix.stats

Supported flags : AT_SYMLINK_NOFOLLOW AT_NO_AUTOMOUNT

val unlinkat : Unix.file_descr -> string -> at_flag list -> unit

Supported flags : AT_REMOVEDIR

val renameat : Unix.file_descr -> string -> Unix.file_descr -> string -> unit
val mkdirat : Unix.file_descr -> string -> int -> unit
val linkat : Unix.file_descr -> string -> Unix.file_descr -> string -> at_flag list -> unit

Supported flags : AT_SYMLINK_FOLLOW

val symlinkat : string -> Unix.file_descr -> string -> unit
val readlinkat : Unix.file_descr -> string -> string
val fchownat : Unix.file_descr -> string -> int -> int -> at_flag list -> unit
val fchmodat : Unix.file_descr -> string -> int -> at_flag list -> unit
val int_of_file_descr : Unix.file_descr -> int
  • raises Not_available

    if OS does not represent file descriptors as numbers

val file_descr_of_int : int -> Unix.file_descr
  • raises Not_available

    if OS does not represent file descriptors as numbers

val is_open_descr : Unix.file_descr -> bool
  • returns

    whether file descriptor is open

val realpath : string -> string

realpath path

  • returns

    the canonicalized absolute pathname of path

type advice =
  1. | POSIX_FADV_NORMAL
  2. | POSIX_FADV_SEQUENTIAL
  3. | POSIX_FADV_RANDOM
  4. | POSIX_FADV_NOREUSE
  5. | POSIX_FADV_WILLNEED
  6. | POSIX_FADV_DONTNEED

access pattern

val fadvise : Unix.file_descr -> int -> int -> advice -> unit

predeclare an access pattern for file data

val fallocate : Unix.file_descr -> int -> int -> unit

fallocate fd off len allocates disk space to ensure that subsequent writes between off and off + len in fd will not fail because of lack of disk space. The file size is modified if off + len is bigger than the current size.

val unsafe_all_pread : Unix.file_descr -> int -> string -> int -> int -> int

all_pread fd off buf ofs len reads up to len bytes from file descriptor fd at offset off (from the start of the file) into the string buf at offset ofs. The file offset is not changed.

all_pread repeats the read operation until all characters have been read or an error occurs. Returns less than the number of characters requested on EAGAIN, EWOULDBLOCK or End-of-file but only ever returns 0 on End-of-file. Continues the read operation on EINTR. Raises an Unix.Unix_error exception in all other cases.

val all_pread : Unix.file_descr -> int -> string -> int -> int -> int
val unsafe_single_pread : Unix.file_descr -> int -> string -> int -> int -> int

single_pread fd off buf ifs len reads up to len bytes from file descriptor fd at offset off (from the start of the file) into the string buf at offset ofs. The file offset is not changed.

single_pread attempts to read only once. Returns the number of characters read or raises an Unix.Unix_error exception.

val single_pread : Unix.file_descr -> int -> string -> int -> int -> int
val unsafe_pread : Unix.file_descr -> int -> string -> int -> int -> int

pread fd off buf ofs len reads up to len bytes from file descriptor fd at offset off (from the start of the file) into the string buf at offset ofs. The file offset is not changed.

pread repeats the read operation until all characters have been read or an error occurs. Raises an Unix.Unix_error exception if 0 characters could be read before an error occurs. Continues the read operation on EINTR. Returns the number of characters written in all other cases.

val pread : Unix.file_descr -> int -> string -> int -> int -> int
val unsafe_intr_pread : Unix.file_descr -> int -> string -> int -> int -> int

intr_pread fd off buf ofs len reads up to len bytes from file descriptor fd at offset off (from the start of the file) into the string buf at offset ofs. The file offset is not changed.

intr_pread repeats the read operation until all characters have been read or an error occurs. Raises an Unix.Unix_error exception if 0 characters could be read before an error occurs. Does NOT continue on EINTR. Returns the number of characters written in all other cases.

val intr_pread : Unix.file_descr -> int -> string -> int -> int -> int
val unsafe_all_pwrite : Unix.file_descr -> int -> string -> int -> int -> int

all_pwrite fd off buf ofs len writes up to len bytes from file descriptor fd at offset off (from the start of the file) into the string buf at offset ofs. The file offset is not changed.

all_pwrite repeats the write operation until all characters have been written or an error occurs. Returns less than the number of characters requested on EAGAIN, EWOULDBLOCK but never 0. Continues the write operation on EINTR. Raises an Unix.Unix_error exception in all other cases.

val all_pwrite : Unix.file_descr -> int -> string -> int -> int -> int
val unsafe_single_pwrite : Unix.file_descr -> int -> string -> int -> int -> int

single_pwrite fd off buf ofs len writes up to len bytes from file descriptor fd at offset off (from the start of the file) into the string buf at offset ofs. The file offset is not changed.

single_pwrite attempts to write only once. Returns the number of characters written or raises an Unix.Unix_error exception.

val single_pwrite : Unix.file_descr -> int -> string -> int -> int -> int
val unsafe_pwrite : Unix.file_descr -> int -> string -> int -> int -> int

pwrite fd off buf ofs len writes up to len bytes from file descriptor fd at offset off (from the start of the file) into the string buf at offset ofs. The file offset is not changed.

pwrite repeats the write operation until all characters have been written or an error occurs. Raises an Unix.Unix_error exception if 0 characters could be written before an error occurs. Continues the write operation on EINTR. Returns the number of characters written in all other cases.

val pwrite : Unix.file_descr -> int -> string -> int -> int -> int
val unsafe_intr_pwrite : Unix.file_descr -> int -> string -> int -> int -> int

intr_pwrite fd off buf ofs len writes up to len bytes from file descriptor fd at offset off (from the start of the file) into the string buf at offset ofs. The file offset is not changed.

intr_pwrite repeats the write operation until all characters have been written or an error occurs. Raises an Unix.Unix_error exception if 0 characters could be written before an error occurs. Does NOT continue on EINTR. Returns the number of characters written in all other cases.

val intr_pwrite : Unix.file_descr -> int -> string -> int -> int -> int
val unsafe_all_read : Unix.file_descr -> string -> int -> int -> int

all_read fd buf ofs len reads up to len bytes from file descriptor fd into the string buf at offset ofs.

all_read repeats the read operation until all characters have been read or an error occurs. Returns less than the number of characters requested on EAGAIN, EWOULDBLOCK or End-of-file but only ever returns 0 on End-of-file. Continues the read operation on EINTR. Raises an Unix.Unix_error exception in all other cases.

val all_read : Unix.file_descr -> string -> int -> int -> int
val unsafe_single_read : Unix.file_descr -> string -> int -> int -> int

single_read fd buf ifs len reads up to len bytes from file descriptor fd into the string buf at offset ofs.

single_read attempts to read only once. Returns the number of characters read or raises an Unix.Unix_error exception.

val single_read : Unix.file_descr -> string -> int -> int -> int
val unsafe_read : Unix.file_descr -> string -> int -> int -> int

read fd buf ofs len reads up to len bytes from file descriptor fd into the string buf at offset ofs.

read repeats the read operation until all characters have been read or an error occurs. Raises an Unix.Unix_error exception if 0 characters could be read before an error occurs. Continues the read operation on EINTR. Returns the number of characters written in all other cases.

val read : Unix.file_descr -> string -> int -> int -> int
val unsafe_intr_read : Unix.file_descr -> string -> int -> int -> int

intr_read fd buf ofs len reads up to len bytes from file descriptor fd into the string buf at offset ofs.

intr_read repeats the read operation until all characters have been read or an error occurs. Raises an Unix.Unix_error exception if 0 characters could be read before an error occurs. Does NOT continue on EINTR. Returns the number of characters written in all other cases.

val intr_read : Unix.file_descr -> string -> int -> int -> int
val unsafe_all_write : Unix.file_descr -> string -> int -> int -> int

all_write fd buf ofs len writes up to len bytes from file descriptor fd into the string buf at offset ofs.

all_write repeats the write operation until all characters have been written or an error occurs. Returns less than the number of characters requested on EAGAIN, EWOULDBLOCK but never 0. Continues the write operation on EINTR. Raises an Unix.Unix_error exception in all other cases.

val all_write : Unix.file_descr -> string -> int -> int -> int
val unsafe_single_write : Unix.file_descr -> string -> int -> int -> int

single_write fd buf ofs len writes up to len bytes from file descriptor fd into the string buf at offset ofs.

single_write attempts to write only once. Returns the number of characters written or raises an Unix.Unix_error exception.

val single_write : Unix.file_descr -> string -> int -> int -> int
val unsafe_write : Unix.file_descr -> string -> int -> int -> int

write fd buf ofs len writes up to len bytes from file descriptor fd into the string buf at offset ofs.

write repeats the write operation until all characters have been written or an error occurs. Raises an Unix.Unix_error exception if 0 characters could be written before an error occurs. Continues the write operation on EINTR. Returns the number of characters written in all other cases.

val write : Unix.file_descr -> string -> int -> int -> int
val unsafe_intr_write : Unix.file_descr -> string -> int -> int -> int

intr_write fd buf ofs len writes up to len bytes from file descriptor fd into the string buf at offset ofs.

intr_write repeats the write operation until all characters have been written or an error occurs. Raises an Unix.Unix_error exception if 0 characters could be written before an error occurs. Does NOT continue on EINTR. Returns the number of characters written in all other cases.

val intr_write : Unix.file_descr -> string -> int -> int -> int
module LargeFile : sig ... end

File operations on large files. This sub-module provides 64-bit variants of the functions ExtUnix.fadvise (for predeclaring an access pattern for file data), ExtUnix.fallocate (for allocating disk space for a file), ExtUnix.all_pread, ExtUnix.single_pread, ExtUnix.pread, ExtUnix.intr_pread, ExtUnix.all_pwrite, ExtUnix.single_pwrite, ExtUnix.pwrite and ExtUnix.intr_pwrite (for reading from or writing to a file descriptor at a given offset). These alternate functions represent positions and sizes by 64-bit integers (type int64) instead of regular integers (type int), thus allowing operating on files whose sizes are greater than max_int.

type mount_flag =
  1. | MS_RDONLY
  2. | MS_NOSUID
  3. | MS_NODEV
  4. | MS_NOEXEC
  5. | MS_SYNCHRONOUS
  6. | MS_REMOUNT
  7. | MS_MANDLOCK
  8. | MS_DIRSYNC
  9. | MS_NOATIME
  10. | MS_NODIRATIME
  11. | MS_BIND
  12. | MS_MOVE
  13. | MS_REC
  14. | MS_SILENT
  15. | MS_POSIXACL
  16. | MS_UNBINDABLE
  17. | MS_PRIVATE
  18. | MS_SLAVE
  19. | MS_SHARED
  20. | MS_RELATIME
  21. | MS_KERNMOUNT
  22. | MS_I_VERSION
  23. | MS_STRICTATIME
  24. | MS_NOUSER

mount system call

val mount : source:string -> target:string -> fstype:string -> mount_flag list -> data:string -> unit
type umount2_flag =
  1. | MNT_FORCE
  2. | MNT_DETACH
  3. | MNT_EXPIRE
  4. | UMOUNT_NOFOLLOW
val umount2 : string -> umount2_flag list -> unit
val chroot : string -> unit

chroot system call

type clone_flag =
  1. | CLONE_FS
  2. | CLONE_FILES
  3. | CLONE_NEWNS
  4. | CLONE_SYSVSEM
  5. | CLONE_NEWUTS
  6. | CLONE_NEWIPC
  7. | CLONE_NEWUSER
  8. | CLONE_NEWPID
  9. | CLONE_NEWNET

namespace

val unshare : clone_flag list -> unit
module Ioctl : sig ... end

Control the underlying device parameters of special files

val ttyname : Unix.file_descr -> string
  • returns

    name of terminal

val ctermid : unit -> string

Get controlling terminal name

val gettid : unit -> int
  • returns

    thread id

val setpgid : int -> int -> unit

setpgid pid pgid sets the process group of the process specified by pid to pgid. If pid is zero, then the process ID of the calling process is used. If pgid is zero, then the PGID of the process specified by pid is made the same as its process ID.

val getpgid : int -> int

getpgid pid returns the PGID of the process specified by pid. If pid is zero, the process ID of the calling process is used.

val getsid : int -> int

getsid pid returns the session ID of the process specified by pid. If pid is zero, the process ID of the calling process is used.

val setreuid : int -> int -> unit

setreuid ruid euid sets real and effective user IDs of the calling process. Supplying a value of -1 for either the real or effective user ID forces the system to leave that ID unchanged.

val setregid : int -> int -> unit

setregid rgid egid sets real and effective group IDs of the calling process. Supplying a value of -1 for either the real or effective group ID forces the system to leave that ID unchanged.

val setresuid : int -> int -> int -> unit

setresuid ruid euid suid sets real, effective and saved user IDs of the calling process. Supplying a value of -1 for either the real or effective user ID forces the system to leave that ID unchanged.

val setresgid : int -> int -> int -> unit

setresgid rgid egid sgid sets real, effective and saved group IDs of the calling process. Supplying a value of -1 for either the real or effective group ID forces the system to leave that ID unchanged.

val tcgetpgrp : Unix.file_descr -> int
val tcsetpgrp : Unix.file_descr -> int -> unit
val sys_exit : int -> 'a

Exit process without running any at_exit hooks (implemented in Pervasives)

type sysinfo = {
  1. uptime : int;
    (*

    Seconds since boot

    *)
  2. loads : float * float * float;
    (*

    1, 5, and 15 minute load averages

    *)
  3. totalram : int;
    (*

    Total usable main memory size

    *)
  4. freeram : int;
    (*

    Available memory size

    *)
  5. sharedram : int;
    (*

    Amount of shared memory

    *)
  6. bufferram : int;
    (*

    Memory used by buffers

    *)
  7. totalswap : int;
    (*

    Total swap space size

    *)
  8. freeswap : int;
    (*

    swap space still available

    *)
  9. procs : int;
    (*

    Number of current processes

    *)
  10. totalhigh : int;
    (*

    Total high memory size

    *)
  11. freehigh : int;
    (*

    Available high memory size

    *)
  12. mem_unit : int;
}

NB all memory fields in this structure are the multiplies of mem_unit bytes

val sysinfo : unit -> sysinfo
  • returns

    overall system statistics

val uptime : unit -> int
  • returns

    seconds since boot

val getifaddrs : unit -> (string * string) list
  • returns

    the list of PF_INET interfaces and corresponding addresses (may change)

type socket_int_option_ =
  1. | TCP_KEEPCNT_
  2. | TCP_KEEPIDLE_
  3. | TCP_KEEPINTVL_
  4. | SO_REUSEPORT_
val string_of_socket_int_option_ : socket_int_option_ -> string
type socket_int_option =
  1. | TCP_KEEPCNT
  2. | TCP_KEEPIDLE
  3. | TCP_KEEPINTVL

Extra socket options with integer value not covered in Unix module. NB Not all options available on all platforms, use have_sockopt to check at runtime (even when function is defined in Specific module)

type socket_bool_option =
  1. | SO_REUSEPORT

The time (in seconds) between individual keepalive probes

val make_socket_int_option : socket_int_option -> socket_int_option_

Permits multiple AF_INET or AF_INET6 sockets to be bound to an identical socket address.

val make_socket_bool_option : socket_bool_option -> socket_int_option_
val have_sockopt_bool : socket_bool_option -> bool
val have_sockopt_int : socket_int_option -> bool
val have_sockopt : socket_int_option -> bool

obsolete, compatibility

val setsockopt : Unix.file_descr -> socket_bool_option -> bool -> unit

Set a boolean-valued option in the given socket

val getsockopt : Unix.file_descr -> socket_bool_option -> bool

Get the current value for the boolean-valued option in the given socket

val setsockopt_int : Unix.file_descr -> socket_int_option -> int -> unit

Set an integer-valued option in the given socket

val getsockopt_int : Unix.file_descr -> socket_int_option -> int

Get the current value for the integer-valued option in the given socket

module Poll : sig ... end
val poll : (Unix.file_descr * Poll.t) array -> ?n:int -> float -> (Unix.file_descr * Poll.t) list
val signalfd : ?fd:Unix.file_descr -> sigs:int list -> flags:int list -> unit -> Unix.file_descr

signalfd ?fd sigs flags () If the first optional argument is omitted, then a new file descriptor is allocated. Otherwise, the given file descriptor is modified (in which case it must have been created with signalfd previously). When you are done with the fd, remember to Unix.close it. Do not forget to block sigs with Unix.sigprocmask to prevent signal handling according to default dispositions.

type ssi

This type represents signal information that is read(2) from the signalfd.

val signalfd_read : Unix.file_descr -> ssi

Blocking read(2) on a signalfd. Has undefined behaviour on non-signalfds. Every successful read consumes a pending signal.

val ssi_signo_sys : ssi -> int

Get the signal value. This form is compatible with the signal values defined in the standard Sys module.

See signalfd(2) for the details of the remaining functions. Most of these integers are actually unsigned.

val ssi_signo : ssi -> int32
val ssi_errno : ssi -> int32
val ssi_code : ssi -> int32
val ssi_pid : ssi -> int32
val ssi_uid : ssi -> int32
val ssi_fd : ssi -> Unix.file_descr
val ssi_tid : ssi -> int32
val ssi_band : ssi -> int32
val ssi_overrun : ssi -> int32
val ssi_trapno : ssi -> int32
val ssi_status : ssi -> int32
val ssi_int : ssi -> int32
val ssi_ptr : ssi -> int64
val ssi_utime : ssi -> int64
val ssi_stime : ssi -> int64
val ssi_addr : ssi -> int64
type which_prio_t =
  1. | PRIO_PROCESS of int
  2. | PRIO_PGRP of int
  3. | PRIO_USER of int

priority target

type priority = int

Priority for a user id

type resource =
  1. | RLIMIT_CORE
  2. | RLIMIT_CPU
  3. | RLIMIT_DATA
  4. | RLIMIT_FSIZE
  5. | RLIMIT_NOFILE
  6. | RLIMIT_STACK
  7. | RLIMIT_AS
val string_of_resource : resource -> string

get resource name

module Rlimit : sig ... end

Limits

val getpriority : which_prio_t -> priority

Get nice value

val setpriority : which_prio_t -> priority -> unit

Set nice value

val getrlimit : resource -> Rlimit.t * Rlimit.t

Get maximum resource consumption.

  • returns

    (soft,hard) limits

val setrlimit : resource -> soft:Rlimit.t -> hard:Rlimit.t -> unit

Set maximum resource consumption

type mlockall_flag =
  1. | MCL_CURRENT
  2. | MCL_FUTURE

mlockall flag

val mlockall : mlockall_flag list -> unit

Lock all pages mapped into the address space of the calling process.

val munlockall : unit -> unit

Unlock all pages mapped into the address space of the calling process.

val memalign : int -> int -> Bigarray.int8_unsigned_elt carray8

memalign alignment size creates a Bigarray.Array1.t of size bytes, which data is aligned to alignment (must be a power of 2)

Author: Goswin von Brederlow

val strptime : string -> string -> Unix.tm

This function is the converse of the strftime function. strptime fmt data convert a string containing time information data into a tm struct according to the format specified by fmt.

val asctime : Unix.tm -> string

Return the ascii representation of a given tm argument. The ascii time is returned in the form of a string like 'Wed Jun 30, 21:21:21 2005\n'

val strftime : string -> Unix.tm -> string

This functions is the converse of the strptime function. strftime fmt data convert a a tm structure data into a string according to the format specified by fmt.

val tzname : bool -> string

tzname isdst

  • parameter isdst

    specifies whether daylight saving is in effect

  • returns

    abbreviated name of the current timezone

val timezone : unit -> int * bool
  • returns

    timezone (seconds West of UTC) and daylight (whether there is time during the year when daylight saving time applies in this timezone)

val timegm : Unix.tm -> float

Inverse of Unix.gmtime

val posix_openpt : open_flag list -> Unix.file_descr

This function opens a pseudo-terminal device.

val grantpt : Unix.file_descr -> unit

This function grants access to the slave pseudo-terminal.

val unlockpt : Unix.file_descr -> unit

This function unlock a pseudo-terminal master/slave pair.

val ptsname : Unix.file_descr -> string

This function get the name of the slave pseudo-terminal.

val backtrace : unit -> string array
  • returns

    a backtrace for the calling program

    NB native function backtrace may fail to unwind the OCaml callstack correctly or even segfault. Do not use lightly.

    See bug #1290, PR#5344 and Debian bug #637380 for details.

val malloc_stats : unit -> unit

Print brief heap summary statistics on stderr

val malloc_info : unit -> string
  • returns

    the information about state of allocator

val mtrace : unit -> unit
val muntrace : unit -> unit
val ptrace_traceme : unit -> unit
val ptrace_peekdata : int -> nativeint -> nativeint
val ptrace_peektext : int -> nativeint -> nativeint
type ptrace_request =
  1. | PTRACE_ATTACH
  2. | PTRACE_DETACH
val ptrace : int -> ptrace_request -> unit
val setenv : string -> string -> bool -> unit

setenv name value overwrite adds the variable name to the environment with the value value, if name does not already exist or overwrite is true

val unsetenv : string -> unit

unsetenv name removes variable name from the environment. If name does not exist in the environment, then the function succeeds, and the environment is unchanged.

val clearenv : unit -> unit

Clear the environment of all name-value pairs

val mkdtemp : string -> string

mkdtemp template creates a unique temporary directory (with permissions 0700). Last six characters of template must be "XXXXXX".

val mkstemp : ?suffix:string -> string -> Unix.file_descr * string

mkstemp ?(suffix="") prefix generates a unique temporary filename in the form prefixXXXXXXsuffix, creates and opens the file, and returns an open file descriptor and name for the file.

val mkostemp : ?suffix:string -> ?flags:open_flag list -> string -> Unix.file_descr * string

mkostemp ?(suffix="") ?(flags=[]) prefix generates a unique temporary filename in the form prefixXXXXXXsuffix, creates and opens the file with flags, and returns an open file descriptor and name for the file.

module BigEndian : sig ... end
module LittleEndian : sig ... end
module HostEndian : sig ... end
val read_credentials : Unix.file_descr -> int * int * int

Reads sender credentials from a file descriptor, returning a 3-element tuple containing the sender process' PID, UID and GID.

val fexecve : Unix.file_descr -> string array -> string array -> 'a

fexecve fd args env executes the program in file represented by file descriptor fd with arguments args and environment variables given by env. As with the execv* functions, on success fexecve never returns; the current process is replaced by the new one.

val sendmsg : Unix.file_descr -> ?sendfd:Unix.file_descr -> string -> unit

Send a message and optionally a file descriptor through a socket. Passing file descriptors requires UNIX domain sockets and a non-empty message.

val recvmsg_fd : Unix.file_descr -> Unix.file_descr option * string

Recieve a message and possibly a file descriptor from a socket.

val sendfd : sock:Unix.file_descr -> fd:Unix.file_descr -> unit

sendfd sock fd sends a file descriptor fd through a UNIX domain socket sock. This will send a sentinel message at the same time, otherwise sendmsg will not pass the file descriptor.

Receive a file descriptor sent through a UNIX domain socket, ignoring the message.

exception Recvfd of Unix.file_descr * string

Receive a message sent through a UNIX domain socket. Raises Recvfd(fd, msg) if a file descriptor is recieved.

val recvmsg : Unix.file_descr -> string
val recvmsg_nofd : Unix.file_descr -> string

Receive a message sent through a UNIX domain socket. Closes and ignores file descriptors.

type sysconf_name =
  1. | ARG_MAX
  2. | CHILD_MAX
  3. | HOST_NAME_MAX
  4. | LOGIN_NAME_MAX
  5. | CLK_TCK
  6. | OPEN_MAX
  7. | PAGESIZE
  8. | RE_DUP_MAX
  9. | STREAM_MAX
  10. | SYMLOOP_MAX
  11. | TTY_NAME_MAX
  12. | TZNAME_MAX
  13. | POSIX_VERSION
  14. | LINE_MAX
  15. | POSIX2_VERSION
  16. | PHYS_PAGES
  17. | AVPHYS_PAGES
  18. | NPROCESSORS_CONF
  19. | NPROCESSORS_ONLN

name of the variable

val sysconf : sysconf_name -> int64

get configuration information at runtime, may raise Not_available for non-standard options (see above) even in Specific module

type splice_flag =
  1. | SPLICE_F_MOVE
  2. | SPLICE_F_NONBLOCK
  3. | SPLICE_F_MORE
  4. | SPLICE_F_GIFT

splice functions flags

val splice : Unix.file_descr -> int option -> Unix.file_descr -> int option -> int -> splice_flag list -> int

splice fd_in off_in fd_out off_out len flags moves data between two file descriptors without copying between kernel address space and user address space. It transfers up to len bytes of data from the file descriptor fd_in to the file descriptor fd_out, where one of the descriptors must refer to a pipe.

If fd_in refers to a pipe, then off_in must be None. If fd_in does not refer to a pipe and off_in is None, then bytes are read from fd_in starting from the current file offset, and the current file offset is adjusted appropriately. If fd_in does not refer to a pipe and off_in is Some n, then n mspecifies the starting offset from which bytes will be read from fd_in; in this case, the current file offset of fd_in is not changed. Analogous statements apply for fd_out and off_out.

  • returns

    the number of bytes spliced to or from the pipe. A return value of 0 means that there was no data to transfer, and it would not make sense to block, because there are no writers connected to the write end of the pipe referred to by fd_in.

val tee : Unix.file_descr -> Unix.file_descr -> int -> splice_flag list -> int

tee fd_in fd_out len flags duplicates up to len bytes of data from the pipe fd_in to the pipe fd_out. It does not consume the data that is duplicated from fd_in; therefore, that data can be copied by a subsequent splice.

  • returns

    the number of bytes that were duplicated between the input and output. A return value of 0 means that there was no data to transfer, and it would not make sense to block, because there are no writers connected to the write end of the pipe referred to by fd_in.

module BA : sig ... end
val have : string -> bool option

have name

  • returns

    indication whether function name is available

    • Some true if available
    • Some false if not available
    • None if not known

    e.g. have "eventfd"

OCaml

Innovation. Community. Security.