Не знаю как правильно называется то что я ищу и есть ли вообще такое, надеюсь поможете. В любом случае буду признателен за идеи!
Обычный пайп (foo | bar
) связывает две команды очень "жестко" - если одна команда завершается, то завершится и другая, плюс есть размер буфера и если кто-то не успевает вычитывать\записывать туда данные то другая команда тормозится, ну и плюс я не могу подцепиться к какому-нибудь пайпу и получить актуальные данные когда захочу. В целом немного тут помогает mkfifo
, но как минимум тут проблема как раз в том что это FIFO - нужно выгрести все что туда понаписали чтоб получить свежие данные, и опять таки упираемся в размер буфера.
Мне нужно что-то типа UDP, только на уровне файлов-потоков - один процесс пишет туда данные и не париться читает ли там что-то этот выхлоп или нет, с какой скоростью и так далее. Читающий поток тоже просто подключается и получает те данные, которые сейчас проходят через эту трубу, и потом отключается когда захочет, и пишущий поток ничего об этом не знает. Соответственно сам такой "udp-пайп" существует независимо от того, кто в него пишет и читает, и есть ли вообще такие процессы - если писать некому, то читателю просто будет отдаваться "ничего", некому читать - просто выкидываем те данные, что пришли на вход.
Надеюсь что я примерно понятно выразил свою мысль. Сразу хочу сказать что решение, доступное для какой-то определенной софтины, мне не интересно - я хочу что-то "кросспрограммное". Ну и хотелось бы чтоб это было с какими-нибудь минимальными задержками.