У меня запущены две отдельные программы, каждая из которых генерирует файл журнала (одна представляет собой вывод устройства, подключенного к последовательному порту, а другая представляет собой отладочные сообщения, отправленные из программы, управляющей вышеупомянутым устройством).

Что я хотел бы сделать, так это сопоставить отладочные сообщения, напечатанные командным программным обеспечением, с ответами, полученными от последовательного устройства. Однако, поскольку эти две программы разделены, я не могу просмотреть отладочное сообщение в одном файле и выяснить, какие данные были отправлены обратно с последовательного порта одновременно.

Я хотел бы найти что-то, что может взять файловые потоки двух программ и объединить их в один файл.

Я думаю, что решение может работать так:

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

2 ответа2

1

Если это команды, которые можно запускать из командной строки, то вы можете сделать это с любой хорошей оболочкой Unix, запустив их в качестве фоновых операций с помощью оператора & , передавая как stdout, так и stderr через tee чтобы записать их в журнал и отобразить их ,

Вот как вы можете сделать это, используя мою оболочку Hamilton C. (Вы можете делать подобные вещи с Cygwin bash .)

(command1 &; command2 &) |& tee logfile.txt

Два фоновых процесса под оболочкой Гамильтона С

Дополнительные строки с цифрами от 1 до 4 на скриншоте - это идентификаторы фонового потока, записанные в stderr оператором & .

0

Библиотека Dokan позволяет вам создать виртуальную файловую систему, которую вы затем можете запрограммировать для работы с виртуальными файлами по своему усмотрению. Я смог собрать что-то, что использовалось для создания виртуального диска, на который мои программы могли бы заходить. Программное обеспечение будет принимать данные, поступающие из каждого файла, по мере их поступления и выводить их в один файл, который чередуется с двумя потоками данных.

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