Заблокируйте файл и отпустите его

У меня есть несколько потоков, работающих из разных окон терминала в 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 секунд перед запуском.

Если вы глубоко знакомы с другим языком программирования, будут другие способы справиться с этим лучше.

Другие вопросы по тегам