Posix_statPOSIX file status and permissions.
This module provides OCaml bindings to POSIX file status functions defined in sys/stat.h.
It includes functions for querying file metadata, changing permissions, and creating directories and special files.
(* Get file information *)
let info = stat "/etc/passwd" in
Printf.printf "Size: %Ld bytes\n" (Posix_types.Off.to_int64 info.st_size);
(* Check if it's a regular file *)
if s_isreg info.st_mode then print_endline "Regular file"Constants for the file type portion of st_mode. Use s_ifmt to mask out the file type bits.
val s_ifmt : Posix_types.mode_tFile type mask. Use as Posix_types.Mode.logand mode s_ifmt.
val s_ifreg : Posix_types.mode_tRegular file (S_IFREG).
val s_ifdir : Posix_types.mode_tDirectory (S_IFDIR).
val s_iflnk : Posix_types.mode_tSymbolic link (S_IFLNK).
val s_ifchr : Posix_types.mode_tCharacter device (S_IFCHR).
val s_ifblk : Posix_types.mode_tBlock device (S_IFBLK).
val s_ififo : Posix_types.mode_tFIFO/named pipe (S_IFIFO).
val s_ifsock : Posix_types.mode_tSocket (S_IFSOCK).
Constants for file permission bits in st_mode.
val s_isuid : Posix_types.mode_tSet-user-ID on execution (S_ISUID).
val s_isgid : Posix_types.mode_tSet-group-ID on execution (S_ISGID).
val s_isvtx : Posix_types.mode_tSticky bit (S_ISVTX). On directories, restricts file deletion.
val s_irwxu : Posix_types.mode_tOwner: read, write, execute (S_IRWXU = 0o700).
val s_irusr : Posix_types.mode_tOwner: read permission (S_IRUSR = 0o400).
val s_iwusr : Posix_types.mode_tOwner: write permission (S_IWUSR = 0o200).
val s_ixusr : Posix_types.mode_tOwner: execute permission (S_IXUSR = 0o100).
val s_irwxg : Posix_types.mode_tGroup: read, write, execute (S_IRWXG = 0o070).
val s_irgrp : Posix_types.mode_tGroup: read permission (S_IRGRP = 0o040).
val s_iwgrp : Posix_types.mode_tGroup: write permission (S_IWGRP = 0o020).
val s_ixgrp : Posix_types.mode_tGroup: execute permission (S_IXGRP = 0o010).
val s_irwxo : Posix_types.mode_tOthers: read, write, execute (S_IRWXO = 0o007).
val s_iroth : Posix_types.mode_tOthers: read permission (S_IROTH = 0o004).
val s_iwoth : Posix_types.mode_tOthers: write permission (S_IWOTH = 0o002).
val s_ixoth : Posix_types.mode_tOthers: execute permission (S_IXOTH = 0o001).
These functions test the st_mode field to determine file type. They are equivalent to the POSIX S_IS* macros.
val s_isreg : Posix_types.mode_t -> bools_isreg mode returns true if mode indicates a regular file.
val s_isdir : Posix_types.mode_t -> bools_isdir mode returns true if mode indicates a directory.
val s_islnk : Posix_types.mode_t -> bools_islnk mode returns true if mode indicates a symbolic link.
val s_ischr : Posix_types.mode_t -> bools_ischr mode returns true if mode indicates a character device.
val s_isblk : Posix_types.mode_t -> bools_isblk mode returns true if mode indicates a block device.
val s_isfifo : Posix_types.mode_t -> bools_isfifo mode returns true if mode indicates a FIFO/named pipe.
val s_issock : Posix_types.mode_t -> bools_issock mode returns true if mode indicates a socket.
type stat = {st_dev : Posix_types.dev_t;st_ino : Posix_types.ino_t;st_mode : Posix_types.mode_t;st_nlink : Posix_types.nlink_t;st_uid : Posix_types.uid_t;st_gid : Posix_types.gid_t;st_rdev : Posix_types.dev_t;st_size : Posix_types.off_t;st_atim : Posix_time2.Timespec.t;st_mtim : Posix_time2.Timespec.t;st_ctim : Posix_time2.Timespec.t;st_blksize : Posix_types.blksize_t;st_blocks : Posix_types.blkcnt_t;}val lstat : string -> statGet file status without following symbolic links.
Returns information about the symbolic link itself, not its target.
See lstat(2).
val chmod : string -> Posix_types.mode_t -> unitChange file permissions.
See chmod(2).
val fchmod : Unix.file_descr -> Posix_types.mode_t -> unitChange file permissions using a file descriptor.
See fchmod(2).
val mkdir : string -> Posix_types.mode_t -> unitCreate a directory.
See mkdir(2).
val mkfifo : string -> Posix_types.mode_t -> unitCreate a FIFO (named pipe).
See mkfifo(3).
val umask : Posix_types.mode_t -> Posix_types.mode_tSet the file mode creation mask.
See umask(2).
The umask is used to turn off permission bits when creating files. For example, umask (Mode.of_int 0o022) prevents group and others write permissions on newly created files.
These functions operate relative to a directory file descriptor, providing protection against certain race conditions (TOCTOU).
See *at(2) functions.
Use current working directory as the base for relative paths. Pass this as dirfd to use CWD like the non-*at functions.
val fstatat : ?dirfd:Unix.file_descr -> ?flags:int list -> string -> statLike stat/lstat but relative to a directory file descriptor.
See fstatat(2).
val fchmodat :
?dirfd:Unix.file_descr ->
?flags:int list ->
string ->
Posix_types.mode_t ->
unitLike chmod but relative to a directory file descriptor.
See fchmodat(2).
val mkdirat : ?dirfd:Unix.file_descr -> string -> Posix_types.mode_t -> unitLike mkdir but relative to a directory file descriptor.
See mkdirat(2).
val mkfifoat : ?dirfd:Unix.file_descr -> string -> Posix_types.mode_t -> unitLike mkfifo but relative to a directory file descriptor.
See mkfifoat(3).