Crate file_lock[][src]

File locking via POSIX advisory record locks.

This crate provides the facility to obtain a write-lock and unlock a file following the advisory record lock scheme as specified by UNIX IEEE Std 1003.1-2001 (POSIX.1) via fcntl().

Examples

Please note that the examples use tempfile merely to quickly create a file which is removed automatically. In the common case, you would want to lock a file which is known to multiple processes.

extern crate file_lock;

use file_lock::FileLock;
use std::io::prelude::*;

fn main() {
    let should_we_block  = true;
    let lock_for_writing = true;

    let mut filelock = match FileLock::lock("myfile.txt", should_we_block, lock_for_writing) {
        Ok(lock) => lock,
        Err(err) => panic!("Error getting write lock: {}", err),
    };

    filelock.file.write_all(b"Hello, World!").is_ok();

    // Manually unlocking is optional as we unlock on Drop
    filelock.unlock();
}

Structs

FileLock

Represents the actually locked file