[Date Prev][Date Next] [Thread Prev][Thread Next] [Date Index] [Thread Index]

Re: нелочащий Fifo



Хмутро.
салям ;)

DEO> пишу тут для некоего девайса подвешенного COM-порту
DEO> несколько скриптов...

DEO> надо весь поток от COM-порта пропускать через несколько
DEO> приложений

DEO> сделал так:

DEO> mkfifo fifo1

DEO> mkfifo fifo2

DEO> далее пишу

DEO> cat /dev/ttyS0 | tee fifo1 | tee fifo2 | ./script1.py

Ну, во-первых, tee fifo1 fifo2, а не tee fifo1 | tee fifo2...

DEO> в других терминалах:
DEO> cat fifo1 | ./script2.py
DEO> cat fofo2 | ./script3.py

DEO> и все работает, но вот если тормознуть script2.py или script3.py,
DEO> то соответствующий tee лочится и лочит cat

DEO> в общем случае скрипты 2 и 3 мне запускать не нужно

DEO> ...

DEO> как покрасивше решить эту проблемму?

Если я что-нибудь понимаю в юниксовом вводе-выводе, то придется писать свою
программу. С использованием select. Не обязательно на C, можно на перле,
например, у него этот select есть.

Можно еще попробовать multitee, но я не очень внимательно прочитал его man и
так и не понял, заблокируется он в этой ситуации или нет.

интересно, а как работает gpm
он ведь повторяет в fifo /dev/gpmdata
вечерком загляну в его исходники на энту тему
хотя с Сей то конечно может быть просто...


кстати интересно:
делаем
od -t x1 /dev/urandom | tee fifo1 | tee fifo2

при этом od - блокирован

на других терминалах пишем
cat fifo1
и
cat fifo2

od разблокируется

и теперь если прибить cat fifo1 или cat fifo2
на другом терминале, то блокировки уже не происходит...


может есть средства управления каналом fifo?



Reply to: