#lock-file #lock #deadlock #env-var

bin+lib alive_lock_file

一个简单的crate,用于创建锁文件而不会产生死锁。

3个版本

0.1.2 2024年7月30日
0.1.1 2024年7月22日
0.1.0 2024年7月22日

199操作系统

Download history 234/week @ 2024-07-21 152/week @ 2024-07-28 4/week @ 2024-08-04

每月390次下载

MIT许可证

8KB
112

alive_lock_file

crates.io docs.rs license

一个简单的crate,用于创建锁文件而不会产生死锁。为此,它使用了以下两种方法:

  • 将提供的路径连接到 $XDG_RUNTIME_DIR 环境变量。此目录会自动由系统清理,并挂载为ramfs。
  • 拦截信号

用法

use alive_lock_file::{init_signals, LockFileState};

fn main() {
    // intercept the `SIGINT` and `SIGTERM` signals.
    init_signals();

    match LockFileState::try_lock("file.lock").unwrap() {
        LockFileState::Lock(_lock) => {
            // while _lock is in scope, `file.lock` will not be removed
        }
        LockFileState::AlreadyLocked => {}
    };
}

依赖项

~2–12MB
~85K SLoC