FIFO. Ограничение на емкость.

Все о программировании под *nix
Аватара пользователя
daermon
Заглянувший
Сообщения: 14
Зарегистрирован: 13 авг 2004, 00:17
Откуда: Minsk

FIFO. Ограничение на емкость.

Сообщение daermon »

Описание ситуации: в качестве ipc используется именованный канал (FIFO). Процесс взаимодействия происходит следующим образом: сначала все данные записывает клиент, и потом все данные читает сервер. Вопрос в следующем: есть ли ограничение на максимальный размер помещенных в FIFO данных? Как можно его изменить? Поясняю. Сколько можно записать данных в FIFO прежде чем произойдет блокировка на записа и как можно изменить это.
Ум подобен желудку. Важно не то, сколько ты в него вложишь, а то сколько он сможет переварить.

Rezki Uladzislau
Заглянувший
Сообщения: 6
Зарегистрирован: 19 май 2005, 21:58
Откуда: Минск

Сообщение Rezki Uladzislau »

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

Аватара пользователя
mend0za
Неотъемлемая часть форума
Сообщения: 2332
Зарегистрирован: 30 авг 2002, 12:33
Откуда: Minsk

Сообщение mend0za »

Максимальный размер данных, помещённых в FIFO, в Linux привязан к размеру страницы памяти

для i386 - это естественно 4096 (4K)

обнаружил раскопкой заголовочных файлов ядра

и атомарность тут не при чём, у него write блокируется, при записи большего количества данных, чем 4K
И увидел я зверя, выходящего из тундры. И число его было 3.14159265358979324...

Rezki Uladzislau
Заглянувший
Сообщения: 6
Зарегистрирован: 19 май 2005, 21:58
Откуда: Минск

Сообщение Rezki Uladzislau »

По поводу атомарности, я имел в виду, если несколько процессов пишут в один канал, то атомарность зависит от размера PIPE_BUF

Ответить