我在 ubuntu 中从不同的终端窗口运行多个线程尝试写入同一个文件。
我想在写入时通过终端锁定文件,以便其他线程必须等待锁定释放才能写入。我该怎么做?
答案1
对于三个相互竞争的 shell 脚本来说,使用flock
可能是最简单的方法。假设您有一个名为 的锁定文件的单一路径/run/lock/myapp
。
# in terminal 1
flock /run/lock/myapp sleep 10
# in terminal 2
flock /run/lock/myapp echo "hello"
如果您大约同时运行这些(虽然第一个先运行),第二个将等待 10 秒后再运行。
如果您深入研究另一种编程语言,那么会有其他方法可以更好地处理这个问题。