mehrere Aufrufe von 'cat' für eine Datei

mehrere Aufrufe von 'cat' für eine Datei

Die Gerätedatei „debug_port“ ist eine Ausgabe eines Ports. Ich habe drei Skripte:

Das erste Skript wartet auf einige Informationen vom Port und protokolliert gleichzeitig Daten in einer Protokolldatei. Anschließend führt es seine Arbeit mit einigen Greps aus dem Protokoll und Echos an den Debug-Port aus.

#first.sh
pkill cat
cat debug_port > $logfile1 &
running=$!
# perform its tasks...
kill $running
killall -s SIGPIPE cat
pkill -P $$
rm $logfile1

Der Zweite wartet auf andere Informationen und führt eine andere Arbeit aus.

#second.sh
pkill cat
cat debug_port > $logfile2 &
running=$!
# <<< there is problem: no output from 'debug_port'
# perform its tasks...
kill $running
rm $logfile2

Und der Anrufer ruft beide nacheinander an

#caller.sh
./first.sh
./second.sh

Das Problem ist, dass ich im zweiten Skript keine Ausgabe von „debug_port“ habe. Ich bin jedoch sicher, dass es eine geben sollte.

Antwort1

Wenn Sie eine Gerätedatei lesen, ist es möglich, dass sie nicht durchsuchbar ist: dass es sich um einen einzelnen Datenstrom handelt. Wenn das der Fall ist, verhindert das Lesen durch einen Prozess das Lesen desselben Bytes durch einen anderen Prozess. Daher sollten Sie nicht mit zwei Prozessen gleichzeitig lesen.

Wenn Sie dies tun müssen, müssen Sie den Stream aufspalten. Dies kann dazu führen, dass mehr Arbeitsspeicher/Festplatte (je nach Implementierung) verwendet wird, da die Daten irgendwo gespeichert werden müssen. Die Speichernutzung hängt vom Abstand zwischen den Prozessen ab.

verwandte Informationen