#lock #experiment #interactive #command-line-tool #flock #key #lock-file

app allenap-flock-experiment

交互式命令行工具,用于实验 flock(2)

3个不稳定版本

0.2.0 2022年3月29日
0.1.1 2022年3月11日
0.1.0 2021年11月27日

#1758开发工具

MIT 许可证

7KB
94

allenap-flock-experiment

简单的交互式工具,用于实验和学习 flock,它可在 Linux、macOS 和其他类 Unix 系统上使用。它的行为可能有些微妙,我在 2017 年撰写关于 flock 的文章时发现亲自操作很有帮助。

命令行工具

如果您已安装 Cargo,可以使用以下命令安装 allenap-flock-experiment:cargo install postgresfixture。这将在 ~/.cargo/bin 中放置一个 allenap-flock-experiment 二进制文件,Cargo 安装过程可能已经将其添加到您的 PATH 中。

$ allenap-flock-experiment
Experiment with flock(2) on a file named `LOCK` in the current directory. Try:

  o – to open the lock file (do this first)
  c – to close the lock file
  s – to acquire a shared lock
  S – to acquire a shared lock without blocking
  x - to acquire an exclusive lock
  X - to acquire an exclusive lock without blocking
  u - to unlock
  U - to unlock without blocking
  q - to quit.
  h or ? - for help.

Opening lock file...
-> Opened lock file
Obtaining shared lock...
-> Obtained shared lock.
Obtaining exclusive lock...
-> Obtained exclusive lock.
Unlocking...
-> Unlocked.
Bye.

在上面的示例中,我按下了 osxu 键,然后按 q 键退出。

这就完成了。然而,在第二个或第三个终端中同时运行它会更有趣。这应该能给您一个实际获取和释放锁的过程的直观印象。尝试以下操作

  • 比较正常模式和阻塞模式。
  • 同时在三台终端中运行 allenap-flock-experiment,并在每个终端中获取一个共享锁。然后尝试在每个终端中获取一个独占锁。
  • 在一个终端中获取一个独占锁,然后尝试在另一个终端中获取一个独占锁。在第一个终端中切换到共享锁。文档暗示第一个可能完全失去对锁的控制,但请查看您机器上的实际情况。

依赖关系

~1.5MB
~37K SLoC