#file-descriptor #file-lock #lock-file #file #lock #fd #file-io

fd-lock

Advisory cross-platform lock on a file using a file descriptor to it

21 stable releases (3 major)

4.0.2 Dec 29, 2023
4.0.0 Jun 30, 2023
3.0.13 Jun 29, 2023
3.0.11 Mar 29, 2023
1.1.0 Jun 28, 2019

#13 in Filesystem

Download history 145574/week @ 2024-02-13 149415/week @ 2024-02-20 156440/week @ 2024-02-27 163766/week @ 2024-03-05 153180/week @ 2024-03-12 168272/week @ 2024-03-19 145382/week @ 2024-03-26 153942/week @ 2024-04-02 138721/week @ 2024-04-09 158447/week @ 2024-04-16 158323/week @ 2024-04-23 146518/week @ 2024-04-30 151128/week @ 2024-05-07 164408/week @ 2024-05-14 150501/week @ 2024-05-21 157601/week @ 2024-05-28

649,714 downloads per month
Used in 359 crates (33 directly)

MIT/Apache

25KB
503 lines

fd-lock

crates.io version downloads docs.rs docs

Advisory cross-platform file locks using file descriptors. Adapted from mafintosh/fd-lock.

Note that advisory lock compliance is opt-in, and can freely be ignored by other parties. This means this crate should never be used for security purposes, but solely to coordinate file access.

Examples

Basic usage

use std::io::prelude::*;
use std::fs::File;
use fd_lock::RwLock;

// Lock a file and write to it.
let mut f = RwLock::new(File::open("foo.txt")?);
write!(f.write()?, "chashu cat")?;

// A lock can also be held across multiple operations.
let mut f = f.write()?;
write!(f, "nori cat")?;
write!(f, "bird!")?;

Installation

$ cargo add fd-lock

Safety

This crate uses unsafe on Windows to interface with windows-sys. All invariants have been carefully checked, and are manually enforced.

Contributing

Want to join us? Check out our "Contributing" guide and take a look at some of these issues:

References

License

MIT OR Apache-2.0

Dependencies

~1–12MB
~139K SLoC