设备文件“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/磁盘(取决于实现),因为数据必须存储在某处。内存使用情况取决于进程之间的关系。