![]() |
|
Модераторы: xvr |
![]()
|
|
| vitaly1979 |
|
|||
|
Шустрый ![]() Профиль Группа: Участник Сообщений: 57 Регистрация: 26.2.2006 Репутация: нет Всего: 1 |
Кто нибудь знает можно ли одновременно писать некольким процессам в именованный канал FIFO?
И сколько может он вместить пока данные не прочитаны одним из процессов? |
|||
|
||||
| MAKCim |
|
||||
![]() Воін дZэна ![]() ![]() ![]() ![]() Профиль Группа: Экс. модератор Сообщений: 5644 Регистрация: 10.12.2005 Где: Менск, РБ Репутация: 84 Всего: 207 |
да, но O_NONBLOCK не должен быть установлен и объем записываемых данных не должен превышать PIPE_BUF байт
PIPE_BUF байт -------------------- Ах, у елі, ах, у ёлкі, ах, у елі злыя волкі © |
||||
|
|||||
| vitaly1979 |
|
|||
|
Шустрый ![]() Профиль Группа: Участник Сообщений: 57 Регистрация: 26.2.2006 Репутация: нет Всего: 1 |
MAKCim, подскажите, а чему приблизительно равно значение PIPE_BUF в Linux?
Вообще то я под UNix использую Perl, для моих задач хватает, а написал сюда вопрос потому что думаю в этом разделе найдется больше знающих по FIFO. И все же. Если я открываю в perl скрипте, указывая "+>" или "+<" я так понимаю O_NONBLOCK устанавливается, потому как нить не блокируется, ожидая на другом конце кого-то. Чем чревато O_NONBLOCK ? Хотя я использую ioctl для чтения, и 1-й результат записи 2-х процессов в 1 FIFO дал положительный результат. |
|||
|
||||
| vitaly1979 |
|
|||
|
Шустрый ![]() Профиль Группа: Участник Сообщений: 57 Регистрация: 26.2.2006 Репутация: нет Всего: 1 |
1 вопрос снимается )
#define PIPE_BUF 4096 /* # bytes in atomic write to a pipe */ |
|||
|
||||
| vitaly1979 |
|
|||
|
Шустрый ![]() Профиль Группа: Участник Сообщений: 57 Регистрация: 26.2.2006 Репутация: нет Всего: 1 |
Так чтож это за зверек такой PIPE_BUF Определяет ли он максимальный размер канала? В документации говорится что при записи менее чем PIPE_BUF байт данные не смешаются из разных процессов. Видимо нужно на практике проверить, чем ждать ответа на форуме |
|||
|
||||
| vitaly1979 |
|
|||
|
Шустрый ![]() Профиль Группа: Участник Сообщений: 57 Регистрация: 26.2.2006 Репутация: нет Всего: 1 |
Возможно полезны будут кому-либо результаты эксперемента моего, так уж и быть, опубликую
Ось FC4 даёт записать в FIFO 64 кб данных, после чего операция записи(perl: print or syswrite) блокируется до появления читающего. |
|||
|
||||
| MAKCim |
|
||||||
![]() Воін дZэна ![]() ![]() ![]() ![]() Профиль Группа: Экс. модератор Сообщений: 5644 Регистрация: 10.12.2005 Где: Менск, РБ Репутация: 84 Всего: 207 |
да, запись из разных процессов в один канал атомарна, если порция записываемых данных не превышает PIPE_BUF байт
вполне возможно, ты же сам привел цитату
-------------------- Ах, у елі, ах, у ёлкі, ах, у елі злыя волкі © |
||||||
|
|||||||
![]()
|
| Правила форума "С/С++: Программирование под Unix/Linux" | |
|
|
Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, xvr. |
| 0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей) | |
| 0 Пользователей: | |
| « Предыдущая тема | C/C++: Программирование под Unix/Linux | Следующая тема » |
|
|
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности Powered by Invision Power Board(R) 1.3 © 2003 IPS, Inc. |