| Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате |
| Форум программистов > C/C++: Программирование под Unix/Linux > Вопросы по FIFO |
| Автор: vitaly1979 8.2.2007, 20:37 |
| Кто нибудь знает можно ли одновременно писать некольким процессам в именованный канал FIFO? И сколько может он вместить пока данные не прочитаны одним из процессов? |
| Автор: vitaly1979 9.2.2007, 12:24 |
| MAKCim, подскажите, а чему приблизительно равно значение PIPE_BUF в Linux? Вообще то я под UNix использую Perl, для моих задач хватает, а написал сюда вопрос потому что думаю в этом разделе найдется больше знающих по FIFO. И все же. Если я открываю в perl скрипте, указывая "+>" или "+<" я так понимаю O_NONBLOCK устанавливается, потому как нить не блокируется, ожидая на другом конце кого-то. Чем чревато O_NONBLOCK ? Хотя я использую ioctl для чтения, и 1-й результат записи 2-х процессов в 1 FIFO дал положительный результат. |
| Автор: vitaly1979 9.2.2007, 13:55 |
| 1 вопрос снимается ) #define PIPE_BUF 4096 /* # bytes in atomic write to a pipe */ |
| Автор: vitaly1979 9.2.2007, 15:35 | ||
Так чтож это за зверек такой PIPE_BUF Определяет ли он максимальный размер канала? В документации говорится что при записи менее чем PIPE_BUF байт данные не смешаются из разных процессов. Видимо нужно на практике проверить, чем ждать ответа на форуме |
| Автор: vitaly1979 9.2.2007, 17:28 |
| Возможно полезны будут кому-либо результаты эксперемента моего, так уж и быть, опубликую Ось FC4 даёт записать в FIFO 64 кб данных, после чего операция записи(perl: print or syswrite) блокируется до появления читающего. |
| Автор: MAKCim 9.2.2007, 18:28 | ||||||
да, запись из разных процессов в один канал атомарна, если порция записываемых данных не превышает PIPE_BUF байт
вполне возможно, ты же сам привел цитату
|