struct CreateFlags [src]
Fields
read: bool = falseWhether the file will be created with read access.
truncate: bool = trueIf the file already exists, and is a regular file, and the access
mode allows writing, it will be truncated to length 0.
exclusive: bool = falseEnsures that this open call creates the file, otherwise causes
error.PathAlreadyExists to be returned.
lock: Lock = .noneOpen the file with an advisory lock to coordinate with other processes
accessing it at the same time. An exclusive lock will prevent other
processes from acquiring a lock. A shared lock will prevent other
processes from acquiring a exclusive lock, but does not prevent
other process from getting their own shared locks.
The lock is advisory, except on Linux in very specific circumstances[1].
This means that a process that does not respect the locking API can still get access
to the file, despite the lock.
On these operating systems, the lock is acquired atomically with
opening the file:
Darwin
DragonFlyBSD
FreeBSD
Haiku
NetBSD
OpenBSD
On these operating systems, the lock is acquired via a separate syscall
after opening the file:
Linux
Windows
[1]: https://www.kernel.org/doc/Documentation/filesystems/mandatory-locking.txt
lock_nonblocking: bool = falseSets whether or not to wait until the file is locked to return. If set to true,
error.WouldBlock will be returned. Otherwise, the file will wait until the file
is available to proceed.
mode: Mode = default_modeFor POSIX systems this is the file system mode the file will
be created with. On other systems this is always 0.
Source
pub const CreateFlags = struct {
/// Whether the file will be created with read access.
read: bool = false,
/// If the file already exists, and is a regular file, and the access
/// mode allows writing, it will be truncated to length 0.
truncate: bool = true,
/// Ensures that this open call creates the file, otherwise causes
/// `error.PathAlreadyExists` to be returned.
exclusive: bool = false,
/// Open the file with an advisory lock to coordinate with other processes
/// accessing it at the same time. An exclusive lock will prevent other
/// processes from acquiring a lock. A shared lock will prevent other
/// processes from acquiring a exclusive lock, but does not prevent
/// other process from getting their own shared locks.
///
/// The lock is advisory, except on Linux in very specific circumstances[1].
/// This means that a process that does not respect the locking API can still get access
/// to the file, despite the lock.
///
/// On these operating systems, the lock is acquired atomically with
/// opening the file:
/// * Darwin
/// * DragonFlyBSD
/// * FreeBSD
/// * Haiku
/// * NetBSD
/// * OpenBSD
/// On these operating systems, the lock is acquired via a separate syscall
/// after opening the file:
/// * Linux
/// * Windows
///
/// [1]: https://www.kernel.org/doc/Documentation/filesystems/mandatory-locking.txt
lock: Lock = .none,
/// Sets whether or not to wait until the file is locked to return. If set to true,
/// `error.WouldBlock` will be returned. Otherwise, the file will wait until the file
/// is available to proceed.
lock_nonblocking: bool = false,
/// For POSIX systems this is the file system mode the file will
/// be created with. On other systems this is always 0.
mode: Mode = default_mode,
}