Posix_statSourcePOSIX 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.
File type mask. Use as Posix_types.Mode.logand mode s_ifmt.
Regular file (S_IFREG).
Directory (S_IFDIR).
Symbolic link (S_IFLNK).
Character device (S_IFCHR).
Block device (S_IFBLK).
FIFO/named pipe (S_IFIFO).
Socket (S_IFSOCK).
Constants for file permission bits in st_mode.
Set-user-ID on execution (S_ISUID).
Set-group-ID on execution (S_ISGID).
Sticky bit (S_ISVTX). On directories, restricts file deletion.
Owner: read, write, execute (S_IRWXU = 0o700).
Owner: read permission (S_IRUSR = 0o400).
Owner: write permission (S_IWUSR = 0o200).
Owner: execute permission (S_IXUSR = 0o100).
Group: read, write, execute (S_IRWXG = 0o070).
Group: read permission (S_IRGRP = 0o040).
Group: write permission (S_IWGRP = 0o020).
Group: execute permission (S_IXGRP = 0o010).
Others: read, write, execute (S_IRWXO = 0o007).
Others: read permission (S_IROTH = 0o004).
Others: write permission (S_IWOTH = 0o002).
Others: 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.
s_isreg mode returns true if mode indicates a regular file.
s_isdir mode returns true if mode indicates a directory.
s_islnk mode returns true if mode indicates a symbolic link.
s_ischr mode returns true if mode indicates a character device.
s_isblk mode returns true if mode indicates a block device.
s_isfifo mode returns true if mode indicates a FIFO/named pipe.
s_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;}Get file status without following symbolic links.
Returns information about the symbolic link itself, not its target.
See lstat(2).
Change file permissions.
See chmod(2).
Change file permissions using a file descriptor.
See fchmod(2).
Create a directory.
See mkdir(2).
Create a FIFO (named pipe).
See mkfifo(3).
Set 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.
Flag: do not follow symbolic links.
Flag: remove directory instead of file (for unlinkat).
Flag: use effective IDs for access checks (for faccessat).
Like 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).
Like mkdir but relative to a directory file descriptor.
See mkdirat(2).
Like mkfifo but relative to a directory file descriptor.
See mkfifoat(3).