Заблокируйте файл и отпустите его
У меня есть несколько потоков, работающих из разных окон терминала в Ubuntu, пытаясь записать в один и тот же файл.
Я хотел бы заблокировать файл через терминал во время записи, чтобы другие потоки ожидали записи до снятия блокировки. Как мне это сделать?
1 ответ
Решение
С помощью flock
вероятно, самый простой способ для трех конкурирующих сценариев оболочки. Предположим, у вас есть единственный путь к файлу блокировки, который называется /run/lock/myapp
,
# in terminal 1
flock /run/lock/myapp sleep 10
# in terminal 2
flock /run/lock/myapp echo "hello"
Если вы запустите их примерно в одно и то же время (хотя первый первый), второй будет ждать 10 секунд перед запуском.
Если вы глубоко знакомы с другим языком программирования, будут другие способы справиться с этим лучше.