Chcę zająć się procesem i przeanalizować go za pomocą trzech różnych programów. Mogłem używać nazwanych potoków, ale zamiast tego mogę użyć fd.Jak wprowadzić do fd zamiast nazwanych potoków?
Oto, co działa tak daleko:
exec 3< <(myprog)
tee p1 p2 >/dev/null <&3
cat p1|ap1 &
cat p2|ap2 &
P1 i P2 zostały stworzone z mkfifo. ap1 i ap2 są programami analitycznymi. Nie wiem, czy mówię to dobrze, ale czy istnieje sposób, aby zamiast tego zmienić numer na tee
na dwa nowe? Coś takiego:
exec 3< <(myprog)
tee >&4 >&5 <&3
cat <&4|ap1 &
cat <&5|ap2 &
Ahh. To może zadziałać. Czy jest jednak jakiś sposób, aby polubić FD? ap1 i ap2 są dużymi komendami z potokami i tonami przełączników. Łatwiej będzie przeczytać, czy mogę użyć fd. – User1
@ Użytkownik1: jest to zdecydowanie możliwe (i ma tę zaletę, że działa w powłokach, które nie obsługują '<()' and '>()'), ale składnia jest niezręczna. W tym przypadku prostsze byłoby zdefiniowanie funkcji "ap1" i "ap2" jako funkcji. – Gilles
Jaka jest inna składnia? Zauważyłem, że używam instrukcji if w niektórych częściach skryptu, które modyfikują sposób wywoływania ap1 w zależności od parametrów wejściowych. '>()' prawdopodobnie nie zadziała zbyt dobrze w moim przypadku. Ale nie wiem, jak inaczej to nazwać. Jakieś pomysły? Dzięki za pomoc do tej pory. – User1