Como posso combinar dois fluxos de arquivos em um?

0

Eu tenho dois programas separados em execução que cada um gera um arquivo de log (um é a saída do dispositivo conectado a uma porta serial, o outro é as mensagens de depuração enviadas de um programa comandando o dispositivo mencionado anteriormente).

O que eu gostaria de poder fazer é correlacionar as mensagens de depuração impressas pelo software de comando com as respostas recebidas do dispositivo serial. No entanto, como os dois programas são separados, não é possível dar uma olhada em uma mensagem de depuração em um arquivo e descobrir quais dados foram enviados de volta da porta serial ao mesmo tempo.

O que eu gostaria de encontrar é algo que pode pegar os fluxos de arquivos dos dois programas e combiná-los em um único arquivo.

Eu imagino que uma solução funcione assim:

Eu configurei os dois programas para salvar seus arquivos de log em dois "arquivos virtuais", que seriam criados e monitorados por essa solução. A solução monitoraria continuamente esses arquivos virtuais e salvaria sua saída em outro arquivo como quando os dados são gravados nos arquivos.

    
por Amr Bekhit 21.02.2013 / 19:02

2 respostas

0

A biblioteca Dokan permite criar um sistema de arquivos virtual que você pode programar para lidar com os arquivos virtuais como quiser. Eu era capaz de colocar algo em conjunto que usado para gerar uma unidade virtual que meus programas poderiam logar. O software pegaria os dados vindos de cada arquivo como e quando chegasse e o enviaria para um único arquivo que entrelaçava os dois fluxos de dados.

    
por 27.12.2014 / 23:24
1

Se esses comandos puderem ser iniciados a partir da linha de comando, você poderá fazer isso com um bom shell Unix, iniciando-os como atividades de segundo plano usando o operador & , canalizando stdout e stderr até tee para gravar -los em um log e exibi-los.

Veja como você pode fazer isso usando meu shell Hamilton C . (Você pode fazer coisas parecidas com o Cygwin bash .)

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

As linhas extras com os dígitos de 1 a 4 na captura de tela são as ids de thread em segundo plano escritas para stderr pelo operador & .

    
por 21.02.2013 / 20:03