Как читать именованный канал (FIFO), который в Linux с помощью java

У меня проблема, когда мне нужно читать потоковые данные из канала, в который приложение, написанное на C, записывает данные. другое приложение, написанное на java, должно читать из этого канала linux. Эта java-программа является многопоточной программой для чтения данных из этого канала, когда другая программа записывает в него данные. И он должен непрерывно считываться из канала по мере добавления данных в очередь канала. Любые предложения были бы полезны.

Проблема, которую пытается решить:

В настоящее время одно приложение (на языке C) непрерывно создает файлы в каталоге в реальном времени, а другое приложение (на языке java) читает и обрабатывает эти файлы. в этом подходе есть некоторая задержка по времени из-за записи и чтения файлов из разных каталогов. Надеемся, что использование канала Linux может помочь уменьшить эту задержку. Есть ли другой лучший подход для обработки непрерывных больших объемов данных?

Я поискал в Google несколько примеров, чтобы прочитать fifo с помощью многопоточной Java-программы. Подходящих примеров найти не удалось, поделитесь, если встретите такие.

Не получается открыть файл?

Johannes Kuhn 26.09.2018 21:37

@JohannesKuhn: он работал с небольшими тестовыми данными и программой. Не уверены, что это единственное лучшее решение для непрерывных больших объемов данных? есть ли другой подход.

Dkr 26.09.2018 21:39

Открытие и чтение из именованного канала, как если бы это был файл, - это предполагаемый способ использования FIFO в Linux и Unix в целом.

that other guy 26.09.2018 21:56
Пользовательский скаляр GraphQL
Пользовательский скаляр GraphQL
Листовые узлы системы типов GraphQL называются скалярами. Достигнув скалярного типа, невозможно спуститься дальше по иерархии типов. Скалярный тип...
Как вычислять биты и понимать побитовые операторы в Java - объяснение с примерами
Как вычислять биты и понимать побитовые операторы в Java - объяснение с примерами
В компьютерном программировании биты играют важнейшую роль в представлении и манипулировании данными на двоичном уровне. Побитовые операции...
Поднятие тревоги для долго выполняющихся методов в Spring Boot
Поднятие тревоги для долго выполняющихся методов в Spring Boot
Приходилось ли вам сталкиваться с требованиями, в которых вас могли попросить поднять тревогу или выдать ошибку, когда метод Java занимает больше...
Полный курс Java для разработчиков веб-сайтов и приложений
Полный курс Java для разработчиков веб-сайтов и приложений
Получите сертификат Java Web и Application Developer, используя наш курс.
0
3
730
1

Ответы 1

Если вы создаете файл FIFO, вы фактически не будете записывать на диск, это будет просто файл в файловой системе, чтобы облегчить доступ. Вы можете прочитать об этом на страницах руководства для fifo (7) (man 7 fifo) для получения информации о FIFO и mkfifo (1) (man 1 mkfifo) для команды для их создания на C.

Другие вопросы по теме