Estoy mayormente de acuerdo con @ikkachu, excepto
Cuál obtienes bbbbbaaaaaaaaaa
o aaaaaaaaaabbbbb
es predecible. El sistema operativo espera a que el hijo termine, debido a wait(NULL)
, luego el padre sale. Como los búferes se vacían al salir, el niño puede escribir primero.
Sin embargo, no confíe en que los búferes sean predecibles. Utilice el vaciado explícito cuando sea necesario.
Если у вас есть средства для запуска сценария bash
, он будет поддерживать счетчик файлов и использовать его для создания циклической последовательности файлов журнала dmesg
.
#!/bin/bash
dir=/path/to/storage # Location of persistent storage
[[ -z "$dir/count" ]] && echo 0 >"$dir/count" # Seed the counter if missing
while sleep 0.25
do
count=$(( $(cat "$dir/count") +1 )) # Read the counter and increment
[[ $count -gt 600 ]] && count=1 # Reset so we can reuse diskspace
echo $count >"$dir/count" # Save the new value
dmesg >"$dir/dmesg.$count" # Write the data
done
Вам потребуется просмотреть результирующий набор из 600 файлов журналов в порядке даты -изменения (ls -t
), поскольку они будут записываться и перезаписываться как циклический буфер.