LINUX.ORG.RU

создать pipe, который будет видится приложениям как файл


0

1

Собственно, не всегда приложения корректно работают с pipe. К примеру, если вы сделаете mkfifo 1, затем сделаете dd if=/dev/zero of=pipe, после чего откроите файл через skype (где (в окне открытия файла пайп вообще не будет видно, его надо будет вручную ввести и нажать enter), то скайп зависнет, а при повторном запуске dd выдаст ошибку (невозможно открыть файл). Собственно, есть ли какие-нибудь методы открыть трубу и нормально с неё читать даже в таких приложениях? Пойдёт даже вариант, когда размер указываем статически (например, 500тб), после чего читающее приложение (его поток) будет «подвисать» пока пишущее, не запишет в трубу новые данные. На данный момент вижу решение только в написании собственной FUSE-ФС на питоне :)

Порекомендуйте что-нибудь, анонимные и не очень аналитики с ЛОРа :)

задача есть реальная или ты просто решил заняться самообразованием, пока заводы стоят и революции готовятся?

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

есть реальные :)
например, передавать через скайп поток. очень хорошее p2p :) а нод то куда больше, чем в i2p :)

заняться самообразованием, пока заводы стоят и революции готовятся

у меня уже готовы валютный чемодан и билеты на все будущие рейсы :))

ktulhu666 ☆☆☆
() автор топика

FIFO и так видится приложениями, как обычный файл, если приложения не специализированы на типах файлов.

man 1 mkfifo
man 2 open
man 2 read
man 7 fifo

Чтобы в/из FIFO можно было писать/читать, нужно, чтобы он был открыт и на чтение, и на запись.

Если читать из FIFO, в который ничего не написано - будет блокировка. Не хочешь блокировку - используй open с O_NONBLOCK.

Если пишешь в FIFO, из которого никто не читает - будет блокировка. Не хочешь блокировку - смотри выше.

tiandrey ★★★★★
()

Pipe-ы не поддерживают seek-операции, по очевидным причинам. А скайп скорее всего, будучи не рассчитанным на работу с трубами, пытается определить размер файла перед чтением. Вот и все дела.

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

передавать через скайп поток. очень хорошее p2p

О, можно кодировать данные в звук, как в dial-up например.

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