Być może szukasz nazwanej potoku .
mkfifo f
{
echo 'V cebqhpr bhgchg.'
sleep 2
echo 'Urer vf zber bhgchg.'
} >f
rot13 < f
Pisanie do potoku nie uruchamia programu nasłuchującego. Jeśli chcesz przetwarzać dane wejściowe w pętli, musisz uruchomić program nasłuchujący.
while true; do rot13 <f >decoded-output-$(date +%s.%N); done
Zauważ, że wszystkie dane zapisywane do potoku są scalane, nawet jeśli istnieje zapis wielu procesów. Jeśli odczytywanych jest wiele procesów, tylko jeden pobiera dane. Dlatego rura może nie być odpowiednia do jednoczesnych sytuacji.
Nazwane gniazdo może obsługiwać równoczesne połączenia, ale wykracza to poza podstawowe skrypty powłoki.
Przy najbardziej skomplikowanych końcu skali są niestandardowe systemy plików , który pozwala zaprojektować i zamontować system plików, gdzie każdy open
, write
itp wyzwala funkcję w programie. Minimalna inwestycja to kilkadziesiąt linii nieszablonowego kodowania, na przykład w Pythonie . Jeśli chcesz wykonywać polecenia tylko podczas odczytywania plików, możesz użyć scriptfs lub fuseflt .
Gilles „SO- przestań być zły”
źródło