【发布时间】:2016-09-10 05:36:05
【问题描述】:
我有一个作为命令行程序运行的库。我想给用户设置一个锁的选项,这样命令行程序就不能运行两次 - 也就是说 - 如果它启动,它不能再次执行,直到它完成,从任何终端会话.
锁应该适用于登录到系统的任何用户 - 我假设我们对文件使用了一些原子操作,但那会是什么类型的操作?它必须是故障安全的。如果出现错误,用户可以使用 --force 选项覆盖锁定。
关于如何在无需设置任何第三方软件的情况下实现此功能的任何想法?
可能的实现:也许最简单的方法是将文件写入文件系统并在程序退出时将其删除。任何第二个出现的程序都会尝试写入相同的文件并得到 EEXIST 错误。
【问题讨论】: