múltiplas chamadas de 'cat' para um arquivo

múltiplas chamadas de 'cat' para um arquivo

O arquivo de dispositivo 'debug_port' é uma saída de alguma porta. Eu tenho três scripts:

O primeiro script espera por algumas informações da porta e, ao mesmo tempo, registra os dados em um arquivo de log e, em seguida, executa seu trabalho, com alguns greps do log e echos para debug_port.

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

O segundo espera por alguma outra informação e realiza outro trabalho.

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

E o chamador liga para os dois sequencialmente

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

O problema é que não tenho saída de 'debug_port', no segundo script. No entanto, tenho certeza de que deveria haver alguns.

Responder1

Enquanto você está lendo um arquivo de dispositivo. É possível que não seja pesquisável: que seja um fluxo único. Nesse caso, a leitura de um processo impedirá a leitura do mesmo byte por outro processo. Portanto você não deve ler com dois processos ao mesmo tempo.

Se você precisar fazer isso, precisará bifurcar o fluxo. Isso pode resultar no uso de mais memória RAM/disco (dependendo da implementação), pois os dados precisam ser armazenados em algum lugar. A quantidade de uso de memória dependerá da disposição entre os processos.

informação relacionada