У меня проблема, когда мне нужно читать потоковые данные из канала, в который приложение, написанное на C, записывает данные. другое приложение, написанное на java, должно читать из этого канала linux. Эта java-программа является многопоточной программой для чтения данных из этого канала, когда другая программа записывает в него данные. И он должен непрерывно считываться из канала по мере добавления данных в очередь канала. Любые предложения были бы полезны.
Проблема, которую пытается решить:
В настоящее время одно приложение (на языке C) непрерывно создает файлы в каталоге в реальном времени, а другое приложение (на языке java) читает и обрабатывает эти файлы. в этом подходе есть некоторая задержка по времени из-за записи и чтения файлов из разных каталогов. Надеемся, что использование канала Linux может помочь уменьшить эту задержку. Есть ли другой лучший подход для обработки непрерывных больших объемов данных?
Я поискал в Google несколько примеров, чтобы прочитать fifo с помощью многопоточной Java-программы. Подходящих примеров найти не удалось, поделитесь, если встретите такие.
@JohannesKuhn: он работал с небольшими тестовыми данными и программой. Не уверены, что это единственное лучшее решение для непрерывных больших объемов данных? есть ли другой подход.
Открытие и чтение из именованного канала, как если бы это был файл, - это предполагаемый способ использования FIFO в Linux и Unix в целом.
Если вы создаете файл FIFO, вы фактически не будете записывать на диск, это будет просто файл в файловой системе, чтобы облегчить доступ. Вы можете прочитать об этом на страницах руководства для fifo (7) (man 7 fifo
) для получения информации о FIFO и mkfifo (1) (man 1 mkfifo
) для команды для их создания на C.
Не получается открыть файл?