Crates.io | fcntl |
lib.rs | fcntl |
version | 0.1.0 |
source | src |
created_at | 2020-07-24 14:59:06.073122 |
updated_at | 2020-07-24 14:59:06.073122 |
description | Wrapper around fcntl (2) and convenience methods to make interacting with it easier. |
homepage | |
repository | https://gitlab.com/BafDyce/fcntl-rs |
max_upload_size | |
id | 269027 |
size | 28,632 |
Wrapper around fcntl (2) and convenience methods to make interacting with it easier. Currently only supports commands related to Advisory record locking.
Cargo.toml
[dependencies]
fcntl = "0.1"
use std::fs::OpenOptions;
use fcntl::{is_file_locked, lock_file, unlock_file};
// Open file
let file = OpenOptions::new().read(true).open("my.lock").unwrap();
// Check whether any process is currently holding a lock
match is_file_locked(&file, None) {
Ok(true) => println!("File is currently locked"),
Ok(false) => println!("File is not locked"),
Err(err) => println!("Error: {:?}", err),
}
// Attempt to acquire a lock
match lock_file(&file, None, Some(FcntlLockType::Write)) {
Ok(true) => println!("Lock acquired!"),
Ok(false) => println!("Could not acquire lock!"),
Err(err) => println!("Error: {:?}", err),
}
// Release lock again
match unlock_file(&file, None) {
Ok(true) => println!("Lock successfully release"),
Ok(false) => println!("Failed to release lock"),
Err(err) => println!("Error: {:?}", err),
}
MIT OR Apache-2.0