múltiples llamadas de 'cat' para un archivo

múltiples llamadas de 'cat' para un archivo

El archivo de dispositivo 'debug_port' es una salida de algún puerto. Tengo tres guiones:

El primer script espera información del puerto y, al mismo tiempo, registra datos en un archivo de registro y luego realiza su trabajo, con algunos greps desde log y echos hasta debug_port.

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

El segundo espera alguna otra información y realiza otro trabajo.

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

Y la persona que llama los llama a ambos secuencialmente.

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

El problema es que no tengo resultados de 'debug_port', en el segundo script. Sin embargo, estoy seguro de que debería haber alguno.

Respuesta1

Mientras lee un archivo de dispositivo. Es posible que no sea buscable: que sea una corriente única. Si es así, la lectura de un proceso impedirá la lectura del mismo byte por parte de otro proceso. Por lo tanto no debes leer con dos procesos al mismo tiempo.

Si necesita hacer esto, entonces debe bifurcar la transmisión. Esto puede resultar en el uso de más memoria RAM/disco (según la implementación), ya que los datos deben almacenarse en algún lugar. El uso de la memoria dependerá de la relación entre los procesos.

información relacionada