LINUX.ORG.RU

Народ помогите с доступом к файлам


0

0

Есть файл к нему обращаются несколько процессов так вот как сделать чтобы в него немогли одновременно писать несколько процессов Точнее не так есть FIFO с одного конца сидит процесс и ждет когда в FIFO что нибудь запишут а с другова те самые процессы так вот эти процессы могут одновременно писать в него то есть если один пишет "1" а другой "2" то будет прочитано "12"!!!!!!!!!!! Как избежать такой ситуации????????????

anonymous

Записывай в FIFO не по одному символу, а блоками по несколько: для них ядро гарантирует атомарность. Придумай какой-нибудь протокол, например, пусть процесс пишет блоками такого вида: <pid процесса><длина сообщения><собственно сообщение>. Получив такой блок читающий процесс точно сможет определиться кто есть кто.

anonymous
()

Да так понятное дело можно сделать я думал что можно сделать это на системном уровне

anonymous
()

На системном уровне это можно сделать через очередей сообщений. В Робачевском это описано.

anonymous
()

file lock -в таких случаях очень помогает:)) man flock; man fcntl;

tvn
()

Попробовал сегодня через очередь так сообщения вообще терятся стали

anonymous
()
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.