对一个文件多次调用“cat”

对一个文件多次调用“cat”

设备文件“debug_port”是某个端口的输出。我有三个脚本:

第一个脚本等待来自端口的一些信息,同时将数据记录在日志文件中,然后执行其工作,使用日志中的一些 grep 和回显到 debug_port。

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

第二个等待其他一些信息并执行另一项工作。

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

调用者依次调用它们

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

问题是,我在第二个脚本中没有“debug_port”的输出。但我确信应该有一些。

答案1

当您正在读取设备文件时。它可能是不可查找的:它是单个流。如果是这样,从一个进程读取,将阻止另一进程读取同一字节。因此,您不应该同时读取两个进程。

如果您需要这样做,那么您需要分叉流。这可能会导致使用更多的内存 RAM/磁盘(取决于实现),因为数据必须存储在某处。内存使用情况取决于进程之间的关系。

相关内容