Jak mogę połączyć dwa strumienie plików w jeden?

0

Mam uruchomione dwa oddzielne programy, z których każdy generuje plik dziennika (jeden jest wyjściem urządzenia podłączonego do portu szeregowego, drugi to komunikaty debugowania wysłane z programu sterującego wyżej wymienionym urządzeniem).

Chciałbym jednak skorelować komunikaty debugowane drukowane przez oprogramowanie sterujące z odpowiedziami otrzymanymi z urządzenia szeregowego. Ponieważ jednak oba programy są osobne, nie mogę spojrzeć na komunikat debugowania w jednym pliku i dowiedzieć się, jakie dane zostały odesłane z portu szeregowego w tym samym czasie.

Chciałbym znaleźć coś, co może wziąć strumienie plików dwóch programów i połączyć je w jeden plik.

Wyobrażam sobie, że rozwiązanie może działać tak:

Skonfigurowałem te dwa programy, aby zapisywały swoje pliki dziennika w dwóch „plikach wirtualnych”, które byłyby tworzone i monitorowane przez to rozwiązanie. Rozwiązanie będzie stale monitorować te pliki wirtualne i zapisywać ich dane wyjściowe w innym pliku jako dane zapisywane w plikach.

Amr Bekhit
źródło

Odpowiedzi:

1

Jeśli są to polecenia, które można uruchomić z wiersza poleceń, możesz to zrobić za pomocą dowolnej dobrej powłoki uniksowej, uruchamiając je jako działania w tle za pomocą &operatora, przesyłając zarówno stdout, jak i stderr, teeaby zapisać je w dzienniku i wyświetlić.

Oto w jaki sposób można to zrobić za pomocą mojego Hamilton powłoka C . (Możesz robić podobne rzeczy z Cygwin bash .)

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

Dwa procesy w tle w powłoce Hamilton C.

Dodatkowe wiersze z cyframi od 1 do 4 na zrzucie ekranu to identyfikatory wątków w tle zapisane przez &operatora do stderr .

Nicole Hamilton
źródło
0

Biblioteka Dokan pozwala na stworzenie wirtualnego systemu plików, który można następnie Program do czynienia z plikami wirtualnych, jak chcesz. Byłem w stanie złożyć coś, co wykorzystało to do wygenerowania wirtualnego dysku, do którego moje programy mogłyby się zalogować. Oprogramowanie pobiera dane przychodzące z każdego pliku w odpowiednim momencie i zapisuje je w jednym pliku z przeplotem dwóch strumieni danych.

Amr Bekhit
źródło