LINUX.ORG.RU
ФорумAdmin

Как поделить файл между процессами

 


0

1

1 процесс периодически создает файл, другой процесс его хочет скопировать и удалить. Иногда возникает ошибка доступа, если в один момент копирует, а тот пытается создать. Как быть?

★★★★

У тебя именно процессы или треды?

Если треды - то наверняка pthread и тогда pthread_mutex_lock/unlock при доступе к файлу.

Если именно процессы, то либо классический локфайл, либо sem_wait/sem_post, либо можно например в shm создать кусок памяти завести в нём pthread_mutex и дальше пользоваться pthread_mutex_lock/unlock.

Stanson ★★★★★
()

у тебя алгоритм полностью не прописан.
Что должно происходить, если первый процесс производит файлы быстрее чем второй их потребляет?
Блокировка первого процесса? Формирование очереди файлов? Перезапись файла? Другое?

MirandaUser2
()
Ответ на: комментарий от gobot

Так-то переименование-перемещение должно быть одной атомарной транзакцией в моём понимании. Но вы лучше попробуйте, поиспытывайте. Это ещё от файловой системы может зависеть.

unDEFER ★★★★★
()
Ответ на: комментарий от unDEFER

Понял, спасибо, решение мне кажется самое оптимальное, на копирование конечно же больше времени уходит на порядок. зачем я вообще копировал не знаю сам )

А...вот почему копировал. Файло же нельзя переименовать когда файл пишется... мда... дела

gobot ★★★★
() автор топика
Последнее исправление: gobot (всего исправлений: 1)

Опиши нормально проблему, начни с того чтобы процитировать эту самую ошибку доступа и уточнить, в каком именно месте ты её видишь. И опиши желаемый результат чётко.

firkax ★★★★★
()

Просто добавь Кафку. Один процесс запихивает файл в топик, второй процесс считывает файл из топика, а кафка в докер-композ работает.

Дешево и сердито.

Nurmukh ★★★
()
Ответ на: комментарий от anonymous

Это не нытьё. Советуя наобум можно насоветовать что-то совершенно непригодное и вредное. Автор действительно не указал ряд существенных деталей, от которых неизбежно зависит правильное решение, и пренебрежение ими будет вести к систематической порче или потере данных, или и тому и тому вместе.

Впрочем, автора порча данных возможно устраивает, но нормальные люди в таком участвовать не захотят.

firkax ★★★★★
()
Последнее исправление: firkax (всего исправлений: 1)