По сути, я хочу захватить первую строку вывода (FIFO) команды оболочки в каком-то объекте, будь то атом или chan
. Я просмотрел core.cache и core.asyn c, но мне еще не удалось найти ничего, что могло бы решить проблему, заключающуюся в том, что sh
(из clojure.java.shell
) возвращает значение только тогда, когда команда перестала писать в стандартный вывод. Как я могу получить доступ к данным, которые он передает по мере их поступления? Например, я хотел бы иметь объект, который имеет самую последнюю строку вывода bspc subscribe
, pactl subscribe
или что-то подобное.
Для контекста я написал конфигурацию для лимонбара, строки состояния, которая читает со стандартного ввода и записывает в стандартный вывод. В настоящее время у меня есть набор Thread
, которые спят в течение 100 мс и обновляют вывод таких вещей, как wmctrl -d
, mpc current
и т. Д. Вместо этого я хотел бы подписаться на эти события, как на Bash (bspc subscribe | while read line ...
).
Спасибо.