2012-05-03 4 views
0

J'ai 4 périphériques UART et je veux regarder leur sortie simultanément. J'utilise le script suivant pour faire ce travail:Sortie UART simultanée avec ligne mise en mémoire tampon

# first kill the cat process from last run 
killall -v cat 

for i in `seq 0 3`; do 
    cat /dev/crbif0rb0c$(i}ttyS0 | grep . --line-buffered & 
    # cat /dev/crbif0rb0c$(i)ttyS0 & 
done 

Mais je reçois pas de sortie de ce script, à l'exception de lignes vides. Quand j'enlève les trucs grep et que j'utilise la deuxième ligne dans la boucle for, j'obtiens beaucoup de sorties, mais pas lisibles car toutes les sorties sont foirées.

Donc, ma question est pourquoi il n'y a pas de sortie (sauf les lignes vides) quand j'utilise grep? Ou n'importe qui peut fournir une meilleure (et réalisable) des solutions pour mon scénario?

Merci d'avance!

[MISE À JOUR] J'ai soudainement constaté que cat /dev/crbif0rb0c${i}ttyS0 | grep^--line-buffered & fonctionnera. Je ne sais pas pourquoi ...

Répondre

1

Que diriez-vous de tail -f /dev/crbif0rb0c{0,1,2,3}?

+0

Non, cela ne fonctionne pas. Aucune sortie n'est imprimée. –

+0

Vos UART impriment-ils des CR et/ou des LF? Parce que la sortie ne sera pas imprimée avant d'avoir terminé une ligne. – artbristol

+0

Ils impriment "\ n". Mais peu importe, le problème est résolu en remplaçant le '.' par'^'dans' grep'. –

Questions connexes