1

Я использую приложение, которое требует AOSS. Результаты должны быть добавлены в файл. Когда я пишу эти команды, файл всегда пуст:

aoss multimon -a DTMF | tee test.txt
aoss multimon -a DTMF > test.txt
aoss multimon -a DTMF >> test.txt

Я считаю, что проблема заключается в том, что регистрация файлов указывает на aoss , а не на multimon multimon -a DTMF , потому что последний фактически является аргументом для первого. Есть ли способ записать команду аргумента вместо этого, и все же сделать приложение работоспособным? (multimon -a DTMF - это терминальная команда, использующая приложение multimon для декодирования DTMF)

2 ответа2

0

Вы можете поместить всю команду multimon в скрипт и запустить , что с aoss или запустить другую оболочку внутри aoss

(shell 1) $ aoss bash
(shell 2) $ multimon -a DTMF > test.txt
(shell 2) $ exit
(shell 1) $
0

aoss (очень короткий сценарий оболочки) работает путем предварительной загрузки специальной библиотеки с использованием LD_PRELOAD . Вы также можете установить эту переменную вручную:

export LD_PRELOAD='/usr/$LIB/libaoss.so'
multimon --etc --etc --etc > test.txt

Я считаю, что проблема заключается в том, что регистрация файлов указывает на aoss , а не на multimon multimon -a DTMF , потому что последний фактически является аргументом для первого.

Это не причина. Когда процесс X открывает или закрывает файлы (например, устанавливает перенаправление) и запускает процесс Y, тогда новый процесс наследует вновь открытые файлы. Другими словами, оболочка просто устанавливает перенаправление и запускает заданную aoss multimon... , которая наследует перенаправленный вывод из оболочки. Точно так же, когда AOSS делает свое дело , и , наконец , запускает multimon -a DTMF то MultiMon процесс наследует то же переназначение от AOSS.

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .