sig
  val make_daemon : (unit -> unit) -> bool -> unit
  val send_file :
    src:Unix.file_descr ->
    dest:Unix.file_descr -> start:int -> len:int -> int
  val pread : Unix.file_descr -> string -> int -> int -> int
  val pwrite : Unix.file_descr -> string -> int -> int -> int
  val getservent : unit -> Unix.service_entry
  val setservent : bool -> unit
  val endservent : unit -> unit
  val listdir : Unix.dir_handle -> string list
  val tilde_expand : string -> string
  val mknod :
    string ->
    Unix.file_perm -> [< `BLOCK | `CHAR ] -> major:int -> minor:int -> unit
  type rusage_who = RUSAGE_SELF | RUSAGE_CHILDREN
  and rusage = {
    ru_utime : Time.timeval;
    ru_stime : Time.timeval;
    ru_maxrss : int;
    ru_ixrss : int;
    ru_idrss : int;
    ru_isrss : int;
    ru_minflt : int;
    ru_majflt : int;
    ru_nswap : int;
    ru_inblock : int;
    ru_oublock : int;
    ru_msgsnd : int;
    ru_msgrcv : int;
    ru_nsignals : int;
    ru_nvcsw : int;
    ru_nivcsw : int;
  }
  val getrusage : UnixExtras.rusage_who -> UnixExtras.rusage
  type rlimit_resource =
      RLIMIT_CPU
    | RLIMIT_FSIZE
    | RLIMIT_DATA
    | RLIMIT_STACK
    | RLIMIT_CORE
    | RLIMIT_RSS
    | RLIMIT_NPROF
    | RLIMIT_NOFILE
    | RLIMIT_MEMLOCK
    | RLIMIT_AS
  and rlimit = { rlim_cur : int; rlim_max : int; }
  val getrlimit : UnixExtras.rlimit_resource -> UnixExtras.rlimit
  val setrlimit : UnixExtras.rlimit_resource -> UnixExtras.rlimit -> unit
  val getpgid : int -> int
  val setpgid : int -> int -> unit
  val getpgrp : unit -> int
  val setpgrp : unit -> unit
end